Draft

OGC Standard

OGC API - Tiles - Part 1: Core
Joan Masó Editor Jérôme St-Louis Editor
Version: 1.0
Additional Formats: XML PDF DOC
OGC Standard

Draft

Document number:20-057
Document type:OGC Standard
Document subtype:Implementation
Document stage:Draft
Document language:English

License Agreement

Permission is hereby granted by the Open Geospatial Consortium, (“Licensor”), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.

If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.

THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD. THE INTELLECTUAL PROPERTY IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.

This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.

Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.

None of the Intellectual Property or underlying information or technology may be downloaded or otherwise exported or reexported in violation of U.S. export laws and regulations. In addition, you are responsible for complying with any local laws in your jurisdiction which may impact your right to import, export or use the Intellectual Property, and you represent that you have complied with any regulations or registration procedures required by applicable law to make this license enforceable.

Suggested additions, changes and comments on this document are welcome and encouraged. Such suggestions may be submitted using the online change request form on OGC web site: http://portal.opengeospatial.org/public_ogc/change_request.php



I.  Abstract

OGC API — Tiles is a standard defining building blocks to create Web APIs allowing to retrieve geospatial information as tiles. Different forms of geospatial information are supported, such as tiles of vector features (“vector tiles”), coverages, maps (or imagery) and other types of geospatial information. Although it can be used independently, the OGC API — Tiles building blocks can be combined with other OGC API standards and draft specifications for additional capabilities or increasing interoperability for specific types of data. The OGC API — Tiles standard references the OGC Two Dimensional Tile Matrix Set (TMS) and Tileset Metadata standard, which defines logical models and encodings for specifying tile matrix sets and describing tile sets. A tile matrix set is a tiling scheme allowing to partition and index space based on a set of regular grids defined for multiple scales in a Coordinate Reference System (CRS).

This specification is a successor to the OGC’s previous Web Map Tile Service (WMTS) standards versions, focusing on simple reusable REST API building blocks which can be described using the OpenAPI specification. Whereas WMTS focused on map tiles, the OGC API — Tiles standard has been designed to support any form of tiled data.

II.  Keywords

The following are keywords to be used by search engines and document catalogues.

ogcdoc, OGC document, tiling, tiles, WMTS, map tiles, vector tiles, tiled feature data


III.  Preface

This document defines the OGC API — Tiles — Part 1: Core standard. A web API conforming to this standard can serve tiles of spatially referenced data or maps with predefined content, extent, and resolution. Suggested additions, changes and comments on this standard are welcome and encouraged. Such suggestions may be submitted using the GitHub repository issues: https://github.com/opengeospatial/ogcapi-tiles .

Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

IV.  Security considerations

No security considerations have been made for this document.

V.  Submitting Organizations

The following organizations submitted this Document to the Open Geospatial Consortium (OGC):

VI.  Submitters

All questions regarding this submission should be directed to the editor or the submitters:

Name Affiliation
Joan Masó Universitat Autònoma de Barcelona (CREAF)
Chuck Heazel Heazel Tech
Jeff Harrison US Army Geospatial Center
Jérôme Jacovella-St-Louis Ecere Corporation
Satish Sankaran Esri

OGC API - Tiles - Part 1: Core

1.  Scope

This document specifies the behavior of Web APIs that provide access to tiles of one or more geospatial data resource (collection) or from the whole dataset that the Web API offers. This standard defines how to discover which resources offered by the Web API can be retrieved as tiles, get metadata about the available tile sets (including according to which tile matrix set each tile set is partitioned and the limits of that tile set within a common potentially global tile matrix set) and how to request a tile.

The core conformance class is defined in a way that could be easily included in a web API that does not conform to the OGC API — Common standard. A web API can combine some requirements classes of this OGC API standard with other OGC API standards (including OGC API — Common) to extend the scope of the Web API by adding functionality.

2.  Conformance

This standard defines fifteen requirements conformance classes.

The standardization targets of all conformance classes are “Web APIs”.

The requirements classes are:

2.1.  Requirements classes defining resources

Clause 7 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core)

The Core specifies requirements that all Web APIs have to implement if they are claiming to support tiles from a geospatial resource following this OGC API — Tiles Part 1: Core standard. It defines how to retrieve individual tiles by building a URI from three variables corresponding to the tile matrix, tile row and tile column for that tile.

Table 1 — Overview of resource and common direct link that corresponds to tiles defined in core conformance class

Resource nameCommon path
Tile…​/{tileMatrix}/{tileRow}/{tileCol}

NOTE  This path template is recommended, but not prescribed. Ordering the parameters differently within the URI is allowed.

Clause 8 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset)

The tileset conformance class defines a mechanism to describe a tileset using a specific tile matrix set and obtain a templated link to individual tiles.

Table 2 — Overview of resources and common direct links that correspond to the tileset

Resource nameCommon path
Tileset…​/tiles/{tileMatrixSetId}
Tile…​/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}

Clause 9 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list)

The tilesets list conformance class defines a generic operation to retrieve a list of tilesets, without association to any particular type of resources.

Table 3 — Overview of resource and common direct link that corresponds to the tileset list

Resource nameCommon path
Tileset list…​/tiles

2.2.  Requirements classes defining data origins

Clause 10 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/dataset-tilesets)

The dataset tilesets conformance class allows retrieving tiles for a whole dataset potentially made up of multiple geospatial data resources. All Web APIs have to implement this conformance class if they are claiming to support dataset tiles following this OGC API — Tiles Part 1: Core standard. Dataset tiles may combine content from multiple geospatial resources, regardless of whether those are available separately (as tiles or otherwise).

Table 4 — Overview of resource and common direct links that corresponds to the dataset tileset

Resource nameCommon path
Vector tileset list/tiles
Map tileset list/map/tiles
Styled Map tileset list/styles/{styleId}/map/tiles

Clause 11 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geodata-tilesets)

The geodata tilesets conformance class allows retrieving tiles from a specific geospatial data resource.

Table 5 — Overview of resource and common direct links that corresponds to the geospatial data resources tilesets

Resource nameExample of possible paths
Vector tileset list/collections/{collectionId}/tiles
Map tileset list/collections/{collectionId}/map/tiles
Styled Map tileset list/collections/{collectionId}/styles/{styleId}/map/tiles

2.3.  Requirements classes defining query parameters

Clause 12 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/collections-selection)

The tiles geodata selection conformance class allows to list specific geospatial data resources from which to retrieve tiles, e.g. for use with data set tiles.

Table 6 — Overview of resource and common direct links that corresponds to the geodata selection

Resource nameExample of possible paths
Vector Tileset/tiles/{tileMatrixSetId}?collections={collectionId},{collectionId},…​
Vector Tile/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}?collections={collectionId},{collectionId},…​
Map tileset/map/tiles/{tileMatrixSetId}?collections={collectionId},{collectionId},…​
Map tile/map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}?collections={collectionId},{collectionId},…​

Clause 13 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/datetime)

The datetime conformance class specifies how to provide tiles in a domain that has a generic time dimension.

2.4.  Requirements classes for specific resource representations

Clause 14 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/oas30)

The OpenAPI Specification 3.0 conformance class specifies requirements for an OpenAPI 3.0 definition in addition to those defined in OGC API — Common — Part 1: Core.

Clause 15 (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/xml)

The XML conformance class specifies how to use XML as an alternative encoding for describing tilesets.

Clause 16

This standard does not mandate a specific encoding or format for representing tiles and remains flexible and extensible to other formats that users and providers might need. However, requirements classes are provided for the following common tile formats:

All these conformance classes act as building blocks that should be implemented in combination with other more fundamental conformance classes that provide support for Web API discovery, conformity and Web API formal definition (e.g., OpenAPI). Possible alternatives for these fundamental conformance classes are OGC API — Common Part 1: Core, OGC API — Features Part 1: Core or any other non-OGC classes that provide this functionality.

All requirements-classes and conformance-classes described in this document are owned by the standard(s) identified.

NOTE  Despite the fact that full paths and full path templates in the previous tables are used in many implementations of the OGC API — Tiles, these exact paths are ONLY examples and are NOT required by this standard. Other paths are possible if correctly described in by the Web API definition document and the links between resources.

2.5.  Declaration of conformance

Conformance with this standard shall be checked using all the relevant tests specified in Annex A (normative) of this document if the respective conformance URLs listed in Table 7 is present in the conformance response. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site.

Table 7 — Conformance class URIs

Conformance classURI
Corehttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core
TileSethttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tileset
Tilesets listhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tilesets-list
Dataset tilesetshttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/dataset-tilesets
Geodata tilesetshttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geodata-tilesets
Collections selectionhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection
DateTimehttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/datetime
OpenAPI Specification 3.0http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/oas30
XMLhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/xml
PNGhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/png
JPEGhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/jpeg
TIFFhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tiff
NetCDFhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/netcdf
GeoJSONhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geojson
Mapbox Vector Tileshttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/mvt

3.  Normative references

There are no normative references in this document.

The following normative documents contain provisions that, through reference in this text, constitute provisions of this document. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.

[1] OGC: OGC 19-014r3 OGC Abstract Specification Topic 22 — Core Tiling Conceptual and Logical Models for 2D Euclidean Space, 2020 https://docs.ogc.org/as/19-014r3/19-014r3.html

[2] OGC: OGC 17-083r4, OGC Two Dimensional Tile Matrix Set Standard (2022)

[3] OGC API — Common — Part 1: Core (2022)

[4] OGC API — Common — Part 2: Geospatial data (2022)

NOTE  Certain conformance classes have a dependency on OGC API — Common — Part 1: Core or OGC API — Common — Part 2: Geospatial data. In some cases, it is possible to replace these dependencies with OGC API — Features — Part 1: Core (http://docs.ogc.org/is/17-069r3/17-069r3.html).

4.  Terms and definitions

This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.

This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.

For the purposes of this document, the following additional terms and definitions apply.

4.1.  Terms and definitions

This document uses the terms defined in Sub-clause 5.3 of OGC Web Services Common (OGC 06-121r9), which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.

This document also uses terms defined in Sub-clause “Terms and Definitions” of OGC API — Common, Part 1: Core.

For the purposes of this document, the following additional terms and definitions apply.

4.1.1. coverage tile

tile that contains information, often in a gridded form, where the values represent observations or measurements as a count, or quantity using some unit of measure

Note 1 to entry: Coverage tiles are generated in combination with OGC API — Coverages, and can also be generated by combining a subset (trim) and resampling operation. When stored in gridded form, these tiles are a type of raster tiles. Usually, visualizing a coverage tile on a rendering device implies mapping those values to colors.

4.1.2. dataset

a set of data, published or curated by a single agent, and available for access or download in one or more representations (modified from DCAT: https://www.w3.org/TR/vocab-dcat-2/#dcat-scope).

Note 1 to entry: A Web API implementing OGC API — Common often gives access to a single dataset which may be comprised of one or more geospatial data resources.

4.1.3. geospatial data resource

web resource that consists in a set of geospatial data

Note 1 to entry: In Web APIs implementing OGC API — Common — Part 2: Geospatial data, geospatial data resources are referred to as collections and are defined in the collections conformance class.

Note 2 to entry: geodata is sometimes used in this document as an abbreviation of geospatial data

4.1.4. geospatial aspect

web resource that represents a component of geospatial information (metadata, schemas…​) or geospatial data accessed using a particular mechanism and data model (e.g., feature items, tiles, maps, coverages,…​) of a more generic geospatial data resource (e.g., a collection)

Note 1 to entry: Not to be confused with a web resource representation. While resource representations share the same path and are selected by format negotiation, geospatial aspects use different paths. Commonly a geospatial aspect is a subpath of a geospatial data resource.

4.1.5. map tile

tile that contains information in a gridded form where the values of cells are colors which can be readily displayed on rendering devices

Note 1 to entry: Map tiles are generated in combination with OGC API — Maps. These tiles are a type of raster tiles.

4.1.6. tile

geometric shape with known properties that may or may not be the result of a tiling (tessellation) process. A tile consists of a single connected “piece” without “holes” or “lines” (topological disc).

In the context of a 2D tile matrix, a tile is one of the rectangular regions of space, which can be uniquely identified by a row and a column integer indices, making up the tile matrix.

In the context of a geospatial data tile set, a tile contains data for such a partition of space as part of an overall set of tiles for that tiled geospatial data.

Note 1 to entry: From OGC 19-014r1: Core Tiling Conceptual and Logical Models for 2D Euclidean Space

Note 2 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set

Note 3 to entry: Tiles are useful to efficiently request, transfer, cache, display, store and process geospatial data for a specific resolution and area of interest, providing deterministic performance and scalability for arbitrarily large datasets.

Note 4 to entry: Tiles can contain a variety of data types, such as grid-based pictorial representations (map tiles), coverage subsets (coverage tiles), or feature-based representations (vector tiles).

4.1.7. tile matrix

tiling grid in a given 2D coordinate reference system, associated to a specific scale and partitioning space into regular conterminous tiles, each of which being assigned a unique identifier

Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set.

Note 2 to entry: Each tile of a tile matrix is uniquely identifiable by a row and a column integer indices. The number of rows is referred to as the matrix height, while the maximum number of columns is referred to as the matrix width (the number of columns can vary for different rows in variable width tile matrices).

4.1.8. tile matrix set

tiling scheme consisting of a set of tile matrices defined at different scales covering approximately the same area and having a common coordinate reference system.

Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set.

4.1.9. tile indexing scheme

scheme allowing to uniquely reference a tile in a tiling scheme by the use of a unique identifier (or set of identifiers), and reversely, which unique identifier (or unique set of identifiers) corresponds to a space satisfying the geometric properties of a specific tile

Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set

4.1.10. tile set

a set of tiles resulting from tiling data according to a particular tiling scheme

Note 1 to entry: From OGC 19-014r1: Core Tiling Conceptual and Logical Models for 2D Euclidean Space, but adapted to clarify that in the context of this document, a tile set refers specifically to a set of tiles containing data and following a common tiling scheme.

4.1.11. tiling scheme

scheme that defines how space is partitioned into individual tiles, potentially featuring multiple levels of detail (each tiling at a different granularity to reflect a different resolution or scale)

A tiling scheme defines the spatial reference system and the geometric properties of each tile defined by the scheme. Those properties include which space each tile occupies, i.e. its extent, as well as a tile coordinate origin if a particular corner of origin convention is established.

Note 1 to entry: A tiling scheme can be defined on top of a CRS as well as other spatial reference systems such as DGGS and other organizations including irregular ones. In this document, only tiling schemes based on CRSs are supported.

Note 2 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set

4.1.12. tile set metadata

additional metadata beyond the common properties defining the tile set. Such metadata could be an abstract, the owner, the author, or other common metadata. [OGC 19-014r3]

metadata describing common properties defining a tile set, layers and styles used to produce the tile set, the limits of the tile matrix with actual data and common metadata such as abstract, owner, author, etc.

Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set

4.1.13. vector tile

tile that contains vector information that has been generalized (simplified) at the tile scale resolution and clipped by the tile boundaries.

Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set

4.1.14. Web API

API using an architectural style that is founded on the technologies of the Web [source: OGC API — Features — Part 1: Core]

Note 1 to entry: See Best Practice 24: Use Web Standards as the foundation of APIs (W3C Data on the Web Best Practices) for more detail.

5.  Conventions

This section provides details of conventions used in this document.

5.1.  Identifiers

The normative provisions in this standard are denoted by the URI http://www.opengis.net/spec/ogcapi-tiles-1/1.0 .

All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.

5.3.  Use of HTTPS

For simplicity, this document in general only refers to the HTTP protocol. This is not meant to exclude the use of HTTPS and simply is a shorthand notation for “HTTP or HTTPS.” In fact, most servers are expected to use HTTPS, not HTTP.

6.  Overview

6.1.  Introduction

The OGC API — Tiles standard defines building blocks which can be used in a Web API to retrieve geospatial data as tiles that follow the structure defined in OGC 17-083r4 2D Tile Matrix Set and Tileset Metadata standard (see Clause 7). The text in this document assumes that the reader is familiar with the concepts in the OGC 17-083r4, such as tile, tile set, tile set metadata, tile matrix and tile matrix set. If that is not the case, reading the overview subsection in the OGC 17-083r4 first is recommended.

Services and clients are encouraged to support as many of the TileMatrixSets defined in the OGC 17-083r4 Annex D and E, as well as others in the OGC TileMatrixSet registry as possible for all geospatial data resources to maximize interoperability. However support for any specific tile matrix set is not required. Tiles that share the same tile matrix set can be easily presented together in a data integration client.

The essence of the tile matrix set has not changed from the original one used in Web Map Tile Service so tiles generated by a WMTS and the ones generated by an implementation of this OGC API that are based on the same tile matrix set can also be easily represented together. If the selected tile matrix set is the one called WebMercatorQuad (see OGC 17-083r4 Annex D.1), tiles are also compatible with the ones made available by some popular mass market approaches (despite concerns repeatedly raised on the accuracy of the CRS used in WebMercatorQuad).

Figure 1 — Contiguous tiles from different services and APIs sharing same WebMercatorQuad tile matrix set and the tile matrix identified as 15 (sometimes called "zoom")

This document does not specify any requirement for the type of geospatial data resource that could be delivered as tiles. Provided that the geospatial data resources can be organized into tiles, they can be supported regardless of whether they are maps, features data, coverages, a resource that does not represent data per se (e.g., an annotation) and so forth.

NOTE  The geospatial data resources (e.g., collections) replace the concept of layer in WMS and WMTS. The main difference is that layers in WMS and WMTS were not defined by other OGC APIs and did not support other functionalities.

These geospatial data resources can advertise one or more lists of available tilesets (see Clause 8 and Clause 9). This standard also defines how to link to tilesets originating from two specific data resources: OGC API datasets (see Clause 10) and collections (see Clause 11), but other OGC APIs can provide other possibilities. Accessing the geospatial data resource content (other than as tiles) or its descriptions is possible but out of the scope of this standard. If a description of the geospatial data resource is specified by another standard, and this description has a mechanism to add links to other resources, this standard indicates the need to add a link to the list of available tilesets.

The OGC API Tiles API standard does not specify how to get a Web API definition, the conformance class list or the collections lists. However, the standard assumes that the first two are defined by an OGC API standard (e.g., OGC API — Common — Part 1: Core) and the latter by an OGC API for collections (e.g., OGC API — Common — Part 2: Geospatial data). A similar definition is provided directly by OGC API — Features — Part 1: Core.

6.2.  Evolution from OGC Web Services

OGC Web Service (OWS) standards have historically implemented a Remote-Procedure-Call-over-HTTP architectural style using Extensible Markup Language (XML) for payloads. This was the state-of-the-art when some of the initial versions of OGC Web Services were originally designed in the late 1990s and early 2000s. This architectural style has now a competing RESTful Web API style that is proposed as an alternative to RPC pattern. A RESTful Web API style is resource-oriented instead of service-oriented. The Web Map Tile Service 1.0 already defines a resource oriented architectural style but it lacks a Web API definition. This OGC API — Tiles standard specifies a Web API that follows the Web architecture and in particular the W3C/OGC best practices for sharing Spatial Data on the Web as well as the W3C best practices for sharing Data on the Web.

This document provides the necessary elements to incorporate tile support to a Web API implementation. These elements can be incorporated in an API based on the OGC API — Features — Part 1, core or can be incorporated in a Web API implementation based on the OGC API — Common — Part 1, core. Both specify a kernel of a Web API approach to services that follows current resource-oriented architecture practices in the OGC. The OGC API — Common standard provides the foundation upon which implementations of the OGC APIs can be built. OGC API — Common can be combined with this standard and other resource-specific OGC API standards to build an OGC API implementation. However, this standard is done in a way that can extend OGC API — Common, but does not make OGC API — Common mandatory. This way, this standard can be reused as a building block in other APIs that does not follow the OGC API pattern.

Beside the general alignment with the architecture of the Web (e.g., consistency with HTTP/HTTPS, hypermedia controls), another goal for OGC API standards is modularization. This goal has several facets:

  • Clear separation between core requirements and more advanced capabilities. This OGC API — Tiles — Core standard presents the requirements that are relevant for almost everyone who wants to share or use Tiled Data on a fine-grained level. Additional capabilities that several communities are using today will be specified as extensions to the Core API.

  • Technologies that change more frequently are decoupled and specified in separate modules (“requirements classes” in OGC terminology). This enables, for example, the use/re-use of new encodings for spatial data or Web API definition (such as new version of the OpenAPI description document).

  • Modularization is not just about a single “service”. OGC APIs will provide building blocks that can be reused in Web APIs in general. In other words, a server supporting the OGC API — Tiles should not be seen as a standalone service. Rather it should be viewed as a collection of Web API building blocks which together implement Tile capabilities. A corollary for this is that it should be possible to implement a Web API that simultaneously conforms to conformance classes from the Features, Coverages, Maps, Tiles, and other future OGC API standards.

This approach intends to support two types of client developers:

  • Those that have never heard about the OGC. Developers should be able to create a client using the Web API definition without the need to adopt a specific OGC approach (they no longer need to read how to implement a GetCapabilities, allowing them to focus on the geospatial aspects).

  • Those that want to write a “generic” client that can access OGC APIs. In other words, they are not specific for a particular Web API.

As a result of following a RESTful approach, OGC API implementations are not backwards compatible with OWS implementations per se. However, a design goal is to define OGC APIs in a way that an OGC API interface can be mapped to an OWS implementation (where appropriate). OGC APIs are intended to be simpler and more modern, but still an evolution from the previous versions and their implementations making the transition easy (e.g. by initially implementing facades in front of the current OWS services).

6.3.  Relationship to other OGC API standards

The OGC WMS and WMTS share the concept of a map and the capability to create and distribute maps at a limited resolution and size. In WMS, the number of rows and columns that a map should have can be selected by the user within limits, and in WMTS the number of rows and columns of the tile is predefined in the tile matrix.

With time, the concept of a tile, initially used for map tiles has been generalized to other data models such as feature data (some vendors use the expression vector tiles) and even to coverage data or processes that can be parallelized dividing the space in tiles. This standard presents an approach to tiles that can be applied to almost every resource type that returns geospatial data. If applied in conjunction with the OGC API — Features standard and on top of a feature collection, the expected result is tiled feature data. If applied in conjunction with the OGC API — Maps standard and on top of a collection that is transformed into a map by applying a style, the result should be map tiles (usually in PNG or JPEG format).

This standard can be referenced by other standards providing resources that that can be offered as tiles. For example:

  • OGC API — Maps specifies the link relation types to access map tilesets from a dataset or collection.

  • OGC API — Styles defines paths to list available styles from which tilesets can also be accessed.

  • OGC API — Coverages specifies the link relation types and specifics of retrieving coverage tiles.

  • OGC API — Processes — Part 3: Workflows and Chaining provides a mechanism to trigger localized processing workflows as a result of retrieving tiles (for a specific area and resolution of interest).

This document is the first part of a series of OGC API — Tiles “parts” that use the core and extensions model. It is foreseen that future parts will specify other extensions, such as how to get information of a point in a tile and how to retrieve multiple tiles in a single request. Other standards or extensions of standards may also provide mechanisms (e.g., additional query parameters) to deal with additional dimensions such as elevation, or more advanced temporal capabilities than what is defined in this standard’s datetime conformance class.

6.4.  Using this standard independently

Although this standard is designed as a building block that can be leveraged by other standards adding precisions about specific types of data available as tiles (e.g., OGC API — Maps and OGC API — Coverages), the conformance classes defined in this document are still concrete enough to make it possible to distribute and request various types of tiled data, including coverages, vector features and maps, by relying strictly on the content herein and in the 2D Tile Matrix Set and Tileset metadata 2.0 standard.

As informative guidance on how this can be achieved, implementations should consider the following aspects.

6.4.1.  Description of the domain

Three different mechanisms are defined by this standard to describe the domain of the tiles, including spatiotemporal axes as well as additional dimensions.

With the Geodata Tilesets List conformance class, the collection description inherited from OGC API — Common — Part 2 contains an extent property that can describe both the spatial and temporal domain of the data. In addition, the Unified Additional Dimensions common building block, used in the example OpenAPI definition, further specifies that additional dimensions shall be described in a similar way to the temporal dimension. An extra grid property in the example OpenAPI definition also allows to specify the resolution and the number of cells (for data organized as a regular grid) or a list of coordinates (for data organized as an irregular grid) along each dimension.

With the TileSet conformance class, the tile set metadata allows to specify a spatial bounding box for tiles as a whole, as well as for each individual collections of geospatial data represented or contained within the tiles (the layers). The resolution of these layers can also be specified by including the minimum and maximum cell size and equivalent scale denominators. The informative Annex J of the 2D Tile Matrix Set and Tileset metadata 2.0 standard further extends this capability to describe the domainset by enhancing the schema to include bounds and resolution for additional dimensions, also able to handle the particularity of unequal temporal units. The annex also includes provisions to describe tile matrix sets featuring additional dimensions which not only extend in other dimensions, but can also define divisions and downsampling of these additional dimensions for lower resolution tile matrices.

In addition to describing the bounds of the tileset dimensions, the TileSet conformance class also allows to specify limits in terms of identifiers for the minimum and maximum tile matrices, tile rows, and tile columns for which data is available.

6.4.2.  Description of the observed or measured properties

With the TileSet conformance class, the tile set metadata allows to specify a the measured or observed properties for each collections of geospatial data represented or contained within the tiles (the layers). For each of these properties, a JSON schema and semantic information can be described. This can be used to describe properties for feature collections or the range type of coverages.

6.4.3.  Available formats and tile response expectations

This standard defines six conformance classes for specific encodings to encode different types of tiled data. Additional encodings can be supported using HTTP content negotiation, following conventions specific to those encodings while falling back to the closest encoding defined in these conformance classes (e.g., using the GeoTIFF and netCDF conformance class as a model for other coverage data, the JPG and PNG classes for other map tiles encodings, and the Mapbox Vector Tiles or GeoJSON for other vector tiles encodings). The informative Annex J of the 2D Tile Matrix Set and Tileset metadata standard also describes a mechanism that can be used to deliver and access 3D content using this standard, including 3D models either batched as a single mesh, or as points vector tiles referencing shared 3D models.

6.4.4.  Limitations

Although this standard can be used by itself, other OGC API standards or draft specifications may provide additional capabilities and specify additional normative requirements describing how to retrieve specific types of tiled content, or allowing to describe in greater detail the domain or the observed or measured properties within the tiled data. Conforming to these standards as well may enable greater interoperability. For example, for map tiles, this standard does not define how a client requests a specific background color or whether tiles should be opaque or transparent.

6.5.  How to approach an OGC API

There are at least two ways to approach an OGC API.

  • Read the landing page, look for links, follow them and discover new links until the desired resource is found

  • Read a Web API definition document that will specify a list of paths and path templates to resources.

For the first approach, many resources in the Web API include links with rel properties to know the reason and purpose for this relation. The following figure illustrates the resources as ellipses and the links as arrows with the link rel as a label.

Figure 2 — Resources and relations to them via links

For the second approach, implementations should consider the Clause 14 which specifies the use of operationID suffixes, providing a mechanism to associate API paths with the requirements class that they implement.

There is yet a third way to approach an OGC API that relies on assuming a set of predefined paths and path templates. These predefined paths are used in many examples in this document and are presented together in Table 8. It is expected that many implementations of this Standard will provide a Web API definition document (e.g. OpenAPI) using this set of predefined paths and path templates to get necessary resources directly. All this could mislead the reader into getting the false impression that the predefined paths are enforced. Therefore, building a client that is assuming a predefined set of paths is risky. However, it is expected that many API implementations will actually follow the predefined set of paths and the client using this approach could be successful in many occasions. Again, be aware that these paths are not required by this Standard.

Table 8 — Overview of resources and common direct links that can be used to define an OGC API — Tiles implementation

Resource nameCommon path
Landing page4{datasetRoot}/
Conformance declaration4{datasetRoot}/conformance
Tiling Schemes6{datasetRoot}/tileMatrixSets
Tiling Scheme6 (tile matrix set2){datasetRoot}/tileMatrixSets/{tileMatrixSetId}
Dataset Tiles
Dataset Feature Tiles3
Dataset tileset list1,2 {datasetRoot}/tiles
Dataset tileset metadata1,2 (in one tile matrix set2){datasetRoot}/tiles/{tileMatrixSetId}
Dataset feature tile1,3{datasetRoot}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
Dataset Map tiles
Map tileset list2 (geospatial resources1){datasetRoot}/map/tiles
Map tileset metadata2 (geospatial resources1){datasetRoot}/map/tiles/{tileMatrixSetId}
Map tile1{datasetRoot}/map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
Geospatial data collections5
Collections5{datasetRoot}/collections
Collection5{datasetRoot}/collections/{collectionId}
Collection Feature Tiles3
Feature tileset list2{datasetRoot}/collections/{collectionId}/tiles
Feature tileset metadata2{datasetRoot}/collections/{collectionId}/tiles/{tileMatrixSetId}
Feature tile3{datasetRoot}/collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
Collection Map tiles
Map tileset list2{datasetRoot}/collections/{collectionId}/map/tiles
Map tileset metadata2{datasetRoot}/collections/{collectionId}/map/tiles/{tileMatrixSetId}
Map tile{datasetRoot}/collections/{collectionId}/map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
Coverage tiles
Coverage tileset list2{datasetRoot}/collections/{collectionId}/coverage/tiles
Coverage tileset metadata2{datasetRoot}/collections/{collectionId}/coverage/tiles/{tileMatrixSetId}
Coverage tile{datasetRoot}/collections/{collectionId}/coverage/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
1 From the whole dataset or one or more geospatial resources or collections 2 Specified in the Two Dimensional Tile Matrix Set and Tileset Metadata standard 3 Some vendors use the expression vector tiles 4 Specified in the OGC API — Common Part 1: Core standard 5 Specified in the OGC API — Common Part 2: Geospatial data standard 6 Recommended but not required by the core of this standard

NOTE 1  Despite the fact that full path and full path templates in the previous table are used in many implementations of the OGC API — Tiles standard, these exact paths are ONLY examples and are NOT required by this standard. Other paths are possible if correctly described in by the Web API definition document and/or the links between resources. However, the TileSets list conformance class does require that paths listing tilesets end with …​/tiles.

NOTE 2  The use of a {tileMatrixSetId} URI template variable is not required by this Standard. However, the TileMatrixSet definition permission proposes to make all tileset paths homogeneous by using it. A {tileMatrixSetId} template variable must NOT be used in templated links of the tileset metadata as defined in Clause 8.

6.6.  Why we call them “tiles”

The word tile is traditionally used to refer to a thin, flat or convex slab of hard material such as baked clay or plastic, laid in rows to cover walls, floors, and roofs. In here, we are using the same approach to cover the viewport of a computer screen with tiles representing parts of the world (geospatial features). Actually, some examples of traditional tilesets representing geospatial features can also be found. They are tilesets with only one available tilematrix.

Figure 3 — Tiles in the floor of the monument of discovery in Lisbon, Portugal. (Lee Cannon April 2010, CC-BY-SA, https://www.flickr.com/photos/leecannon/5127274297)

Figure 4 — Tiles in the floor of the terminal 2 of the Prague Airport, Czech Republic. (Joan Masó, September 2022, CC0)

7.  Requirement Class “Core”

Requirements class 1: Requirements Class Core

Target type Web API
Dependency RFC 2616 (HTTP/1.1)
Dependency RFC 2818 (HTTP over TLS) (optional)
Dependency http://www.opengis.net/spec/tms/2.0/req/tilematrixset
Label http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core

The core conformance class is designed as a very generic conformance class that describes a HTTP GET operation, as well as its response, to retrieve tiles from a tileset which can be described by the 2D Tile Matrix Set standard. It introduces the idea of URI templates and variables associated to the TileMatrix, TileRow and TileCol concepts defined in the 2D Tile Matrix Set standard but it does not prescribe a particular path or template form for the URL of those tiles.

This conformance class by itself only concerns the individual tiles and does not describe the tileset as a whole. It is highly recommended that the implementer of a Web API provides tileset metadata in conjunction with the core conformance class as it provides important information to clients. This can be done by also implementing the Clause 8 or integrating within another API providing this capability through another mechanism.

7.1.  A tile

A tile resource is a geospatial resource presenting a fragment of a more bigger geospatial data resource that is spatially constrained at the boundaries of the selected tile in a tile matrix set.

7.1.1.  Operation

This operation allows retrieving a single tile that represents information coming from geospatial data resources.

Requirement 1

Label/req/core/tc-op
A

The tiles making up a tileset containing available data SHALL be available as an HTTP GET request to a URI that can be built from a template containing two or three variables. If the tileset is available for more than one tilematrix, the template shall contain three variables (such as {tileMatrix}, {tileRow} and {tileCol} as defined by the tileset conformance class, or {z}, {y} and {x}). If the tileset is available for a single tilematrix, the template shall contain two variables (such as {tileRow} and {tileCol} as defined by the tileset conformance class, or {y} and {x}). The URI is obtained by substituting the variables by their respective valid values.

B

These variables SHALL correspond to the tile matrix, tile row and tile column of a particular tile matrix set as defined by the 2D Tile Matrix Set standard.

C

The API SHALL provide a mechanism to obtain this template and associate the variables to their respective meaning, for example by implementing the tileset conformance class, or through an API definition.

NOTE 1  The core conformance class by itself does not prescribe specific names for these variables, nor does it define a specific mechanism to communicate the template.

Typical geospatial data resources that can be retrieved as tiles are: vector features (available at /collections/{collectionId}/items in OGC API — Features — Part 1: Core, for which it is recommended to provide tilesets at /collections/{collectionId}/tiles), maps (specified in OGC — API Maps) or coverages (specified in OGC API — Coverages).

Recommendation 1

Label/rec/core/tc-op
A

A tiles implementation SHOULD consider to use the tiles URI template variables in the following common order and form: {tileMatrix}/{tileRow}/{tileCol}

B

A tiles implementation SHOULD consider to specify the variables {tileMatrix} even if there is only one valid value for them.

NOTE 2  Clients should not assume the common order of URI template variable and should extract them from the examples in the “links” section or from the API description path templates.

The API implementation can determine the supported encodings, or more precisely the media types of the supported encodings, from the Web API definition, or from the declaration of conformance to the Clause 16. The desired encoding is selected using HTTP content negotiation.

The core of the OGC API — Tiles standard provides a mechanism to select and retrieve a tile in a TileMatrixSet that is agreed between the client and server. This core conformance class does not discuss the details on how the client and service agrees on which TileMatrixSet they use.

7.1.2.  Parameter tileMatrix

Requirement 2

A

If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileMatrix with the following characteristics (shown as OpenAPI Specification 3.0 fragment):

  name: tileMatrix
  in: path
  description: Identifier selecting one of the scales defined in the TileMatrixSet and representing the scaleDenominator the tile.
  required: true
  schema:
    type: string
  example: '11'

7.1.3.  Parameter tileRow

Requirement 3

A

If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileRow with the following characteristics (shown as OpenAPI Specification 3.0 fragment):

  name: tileRow
  in: path
  description: Row index of the tile on the selected TileMatrix. It cannot exceed the MatrixWidth-1 for the selected TileMatrix
  required: true
  schema:
    type: integer
    minimum: 0
  example: '827'

7.1.4.  Parameter tileCol

Requirement 4

A

If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileCol with the following characteristics (shown as OpenAPI Specification 3.0 fragment):

  name: tileCol
  in: path
  description: Column index of the tile on the selected TileMatrix. It cannot exceed the MatrixHeight-1 for the selected TileMatrix.
  required: true
  schema:
    type: integer
    minimum: 0
  example: 1231

7.1.5.  Parameter tileMatrixSetId (optional)

Permission 1

A

An extra {tileMatrixSetId} variable may be used by the API definition for simplification purposes and, this way, make all tileset paths homogeneous.

B

The {tileMatrixSetId} variable will be interpreted as one of TileMatrixSet identifiers supported by the resource. In other words, it represents all the TileMatrixSets supported by the resource.

C

The following OpenAPI Specification 3.0 fragment) can be used in this case:

  name: tileMatrixSetId
  in: path
  description: Identifier selecting one of the TileMatrixSetId supported by the resource.
  required: true
  schema:
    type: string
  example: 'WebMercatorQuad'

7.1.6.  Response

A successful response to a tile GET operation will be consistent with the media type of resource requested. This Standard does not impose any media type or file format. Example of common media types are:

  • For features the media type may be GeoJSON or Mapbox Vector Tiles;

  • For coverages the response may be GeoTIFF or netCDF;

  • For maps the response may be a JPEG or a PNG.

Requirement 5

Label/req/core/tc-success
A

A successful execution of the tile operation with content SHALL be reported as a response with a HTTP status code 200.

B

The content of that response SHALL be consistent with the format requested via HTTP content negotiation and represent elements inside or intersecting with the spatial extent of the geographical area of the tile identified by the tile matrix, tile row and tile column of the tileset’s tile matrix set.

C

For image tiles, where this behavior is not explicitly overridden by an extension (e.g., a query parameter, or format-specific requirements), the width and height of the image (measured in raster pixels) SHALL be equal to the tileWidth and tileHeight of the corresponding tile matrix.

D

For gridded coverage tiles, where this behavior is not explicitly overridden by an extension (e.g., a query parameter, or format-specific requirements), for coverages whose cells span the whole area of the resolution, the width and height of the coverage tile (measured in cells) SHALL be the tileWidth and tileHeight of the corresponding tile matrix; and for coverages whose cells are measurements or observations for a conceptually infinitely small point the width and height of the coverage tile SHALL be tileWidth + 1 and tileHeight + 1.

Permission 2

Label/per/core/tc-core-tile-encoding
A

This draft specification does not impose any media type on the encoding of a response containing tiled feature data. For features the media type MAY be GeoJSON, Mapbox vector tiles or other format.

B

This draft specification does not impose any media type on the encoding of a response containing tiled coverage data. For coverages it MAY be a GeoTIFF, netCDF or other format.

C

This draft specification does not impose any media type on the encoding of a map tile response. For maps it MAY be a JPEG, PNG or other format.

Normally, the content partially outside the tile bounding box will be clipped at the extent of the bounding box. This can be done efficiently when tiles are in raster format (e.g., map tiles). However, tiles containing features in vector format may not clip features that are partially outside, or clip to a slightly enlarged bounding box (a buffer), to ensure continuity of features or for performance.

Recommendation 2

Label/rec/core/tc-success-scale
A

The content of that response SHOULD be simplified to comply with the scale denominator represented by the TileMatrix identified. Full resolution geographical elements are only expected for the lower values of scale denominators.

Recommendation 3

Label/rec/core/tc-deepfullempty
A

If a requested tile is empty (no data) and all tiles within its extent at all more detailed zoom levels (tile matrices) are guaranteed to also be empty, the response header SHOULD include OATiles-hint: empty.

B

If a requested tile is full (e.g., the inside of a polygon for vector features, a solid color for a map, or a grid completely filled with the same value for a coverage) and all tiles within its extent at all more detailed zoom levels (tile matrices) are guaranteed to also be identically full, the response header SHOULD include OATiles-hint: full.

NOTE  A client could use this information to avoid requesting the more detailed tiles of that area.

To enable search engines to easily discover the content offered by an implementation of OGC API — Tiles, as well as to enable web browsers to easily display the content offered by the Web APIs, this standard allows for responses to operations to be encoded in HTML.

Permission 3

Label/per/core/tc-core-html
A

Every 200-response of an operation of the server MAY support the media type text/html.

7.1.7.  Error conditions

A general summary of the HTTP status codes can be found in OGC API — Features — Part 1: Core, version 1.0 as well as in OGC API — Common.

Requirement 6

Label/req/core/tc-error
A

If the path parameter values tileMatrix, tileRow, tileCol for a tile request are out-of-range (outside the tile matrix set or tile matrix set limits of the resource), the HTTP response SHALL use a status code 404 or a 400. The response can also contain an exception report.

B

If the tile has no content due to lack of data in the area, but is within the data resource’s tile matrix sets and tile matrix sets limits, the HTTP response will use the status code either 204 (indicating an empty tile with no content) or a 200 with the content of a blank response compatible with the requested media type (which may or may not be zero bytes long, depending on the output format).

7.2.  Declaration of conformance classes

To support “generic” clients wishing to access multiple OGC API standards and extensions — and not “just” a specific Web API / server, the Web API has to declare the requirements classes it implements and conforms to.

7.2.1.  Response

The conformance page mainly consists of a list of links.

Requirement 7

Label/req/core/conformance-success
A

If the API instance has a mechanism to advertise conformance classes, the list of conformance classes SHALL include the ones defined in this standard and listed in Table 7 that are supported by this API instance.

If the server declares also conformity to OGC API — Common or to OGC API — Features — Part 1: Core, version 1.0, then it has to consider the OGC API — Common requirements for declaring conformance, i.e. the use of a the conformance page. In the JSON format the conformance page is an array of links following the link schema defined in the OGC API — Common or in OGC API — Features — Part 1: Core, version 1.0. Below is an example fragment of a conformance information page of a Web API conformant to OGC API — Common and OGC API — Tiles.

Example — Conformance Information Page fragment

{
  "conformsTo": [
    "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core",
    "http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core"
  ]
}

8.  Requirement Class “TileSet”

8.1.  Overview

Requirements class 2: Requirements Class Tileset

Target typeWeb API
DependencyRFC 8288 (Web Linking)
Dependencyhttp://www.opengis.net/spec/tms/2.0/req/json-tilesetmetadata
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset

The tileset conformance class provides a mechanism to retrieve metadata for a set of tiles of geospatial data tiled according to one specific TileMatrixSet. It also provides a mechanism to obtain a templated link to retrieve individual tiles as defined in the core conformance class.

It describes the HTTP GET operation on a tileset resource and its response, but does not prescribe an specific path. The response provides metadata as per the 2D Tile Matrix Set and TileSet Metadata standard.

The essential elements of this metadata are:

  • a link to the definition of the TileMatrixSet (either one registered in the OGC TileMatrixSet registry, or to a custom TileMatrixSet definition),

  • a TileMatrixSet URI in the case of a TileMatrixSet registered with an authority (e.g. the OGC NA TileMatrixSet registry),

  • a Coordinate Reference System (e.g. provided as a URI),

  • a templated link (URI) to individual tiles,

  • and a data type (indicating whether the tileset consists of vector, coverage or map tiles).

It may optionally also provide additional information, such as:

  • a title,

  • a description,

  • the limits of the tileset if it does not span the full extent of the TileMatrixSet,

  • the geospatial data resources involved in the creation of the tiles (potentially including links to OGC API collections),

  • a schema of the available properties contained within the tiles,

  • styles used to create the tiles,

  • a central point on which a viewer may initially focus,

  • attribution.

A link to a definition of a TileMatrixSet is always required whether a custom TileMatrixSet or a registered TileMatrixSet is used. It is recommended that the Web API hosts a local definition of each supported TileMatrixSet to ensure availability.

8.2.  Tileset resource

A tileset consists of a set of tiles obtained by partitioning geospatial data according to a particular TileMatrixSet. The tileset metadata contains all the information necessary for a client application to request tiles from the tileset.

8.2.1.  Tileset path

This class does not specify a full path to a tileset. Generally, tileset resources are linked from a tilesets list resource (refer to the Clause 9 for how to list available tilesets and link to individual tileset resources). Refer to the Clause 10 and Clause 11 describing two mechanisms to associate lists of tilesets to an OGC API dataset (landing page) and to geospatial data (collection) resources respectively. It is expected that a tileset can be used as a building block in other Web APIs and can be used to provide tiles of different types of data such as maps, features, coverages or other types of geospatial data that can benefit from tiling.

8.2.2.  Response

A successful GET response to a tileset resource will be metadata consisting of a data structure with the specific information necessary to build a complete GET request of the tiles representing the geospatial data resource.

Requirement 8

Label/req/tileset/description
A

The tileset endpoint SHALL support negotiating an application/json response. In this case, a successful response of a HTTP GET for a specific tileset SHALL be encoded following the data model and JSON schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

B

If the tileset endpoint also support negotiating an application/xml response, a successful response of a HTTP GET for a specific tileset SHALL be encoded following the data model and XML schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

C

If the tileset uses a TileMatrixSet registered in a TileMatrixSet registry (e.g. OGC NA), the tileMatrixSetURI property SHALL link to the registered TileMatrixSet (e.g. http://www.opengis.net/def/tilematrixset/{tileMatrixSet}).

D

The links property SHALL include a link to the TileMatrixSet definition with relation type http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme following the tile matrix set schema, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

E

The tileset metadata SHALL include at least one templated link to individual tiles using the relation type item, and the template parameters {tileMatrix}, and {tileRow} and {tileCol}. Those variables are to be substituted by their respective valid values to obtain the URL to a tile.

F

If a tiles link template is specific to a particular format, it SHALL contain the media type for that format in the “type” property. Otherwise, normal HTTP content type negotiation rules apply (Accept: header).

G

A property templated with a boolean true value SHALL be part of the link properties to indicate that the link needs to be processed to substitute the templated variables with valid values before being used as a URL to a tile.

In addition to the recommendation to include links in the HTTP response headers as specified in OGC API — Common — Part 1, this standard recommends following the Link-Template HTTP Header Field draft specification, to include Link-Template for templated links, such as the URI for individual tiles.

Recommendation 4

Label/rec/tileset/header-linktemplates
A

The tileset metadata response SHOULD include a Link-Template: in the header following the Link-Template HTTP Header Field draft specification, for example, Link-Template: </ogcapi/collections/blueMarble/map/tiles/GNOSISGlobalGrid/{tileMatrix}/{tileRow}/{tileCol}.png>; rel=”item”; type=”image/png”; var-base=”/ogcapi/vars/” .

B

The templated link in the tilesetmetadata SHOULD include a varBase, if the implementation additionally supports providing semantic information about the parameters.

See the Clause 15 for providing an XML representation of the tileset metadata.

Support for alternative encodings for tileset metadata can be added, such as TileJSON.

Currently, use of the TileJSON specification usually implies a WebMercatorQuad TileMatrixSet and the reference to it is implicit. TileJSON version 3 provides an additional mechanism to cite data sources.

NOTE 1  The common TileMatrixSets defined in Annex D of OGC 17-083r4 and the variable-width TileMatrixSets defined in Annex E of OGC 17-083r4 are registered in the OGC TileMatrixSets registry available at http://www.opengis.net/def/tms.

Recommendation 6

Label/rec/tileset/bbox
A

The tileset metadata SHOULD populate the bounding box element to describe the tileset extent.

Clients or servers are not required to support a specific default TileMatrixSet.

NOTE 2  The OGC TileMatrixSets registry is based on the OGC Two Dimensional Tile Matrix Set standard. Refer to Annex D and E for commonly used TileMatrixSets

NOTE 3  When this conformance class is used together with the GeoData Tilesets conformance class, the geospatial data resource URL is typically the first part of the URL template, but this standard does not mandate this (e.g., the tileset metadata and tiles could be hosted on more affordable object storage).

Example 1 — Example fragment of a tileset response for a common TileMatrixSet defined in the OGC NA registry

{
  ...
  "tileMatrixSetURI": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldMercatorWGS84Quad",
  "dataType": "map",
  "crs": "http://www.opengis.net/def/crs/EPSG/0/3395",
  "links": [
    ...
    {
     "href": "http://data.example.com/collections/buildings/tiles/WorldMercatorWGS84Quad",
     "rel": "self",
     "type": "application/json",
     "title": "Buildings tileset tiled using World Mercator TileMatrixSet"
    },
    {
     "href": "http://schemas.opengis.net/tms/2.0/json/examples/WorldMercatorWGS84Quad.json",
     "rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
     "type": "application/json",
     "title": "Definition of WorldMercatorQuad TileMatrixSet"
    },
    {
     "href": "http://data.example.com/collections/buildings/tiles/WorldMercatorWGS84Quad/{tileMatrix}/{tileRow}/{tileCol}.png",
     "templated": true,
     "rel": "item",
     "type": "image/png",
     "title": "Templated link for retrieving PNG tiles"
    }
   ...
  ],
  "tileMatrixSetLimits":
  [
    { "tileMatrix" : "0", "minTileRow" : 0, "maxTileRow" : 0, "minTileCol" : 0, "maxTileCol" : 0 },
    { "tileMatrix" : "1", "minTileRow" : 0, "maxTileRow" : 0, "minTileCol" : 1, "maxTileCol" : 1 },
    { "tileMatrix" : "2", "minTileRow" : 1, "maxTileRow" : 1, "minTileCol" : 2, "maxTileCol" : 2 },
    { "tileMatrix" : "3", "minTileRow" : 3, "maxTileRow" : 3, "minTileCol" : 4, "maxTileCol" : 4 },
    ...
  ]
}

NOTE 4  The use of “templated” is inspired by the JSON Hypertext Application Language (HAL), https://tools.ietf.org/html/draft-kelly-json-hal-08

The following table explains the meaning of the URI template variables.

Table 9 — URI template variables for tiles and valid values

URL template variableMeaningPossible values
TileMatrixtile matrix identifierIdentifier of the tile matrix (representing a zoom level, a.k.a. a scale) listed in the TileMatrixSet definition
TileRowrow index of tile matrixA non-negative integer between 0 and the MatrixHeight — 1. If there is a TileMatrixSetLimits the value is limited between MinTileRow and MaxTileRow
TileColcolumn index of tile matrixA non-negative integer between 0 and the MatrixWidth — 1. If there is a TileMatrixSetLimits the value is limited between MinTileCol and MaxTileCol

Example 2 — Example fragment of a tileset response for a Web API-defined TileMatrixSet

{
  ...
  "dataType": "map",
  "crs": "http://www.opengis.net/def/crs/EPSG/0/2001",
  "links": [
    ...
    {
     "href": "http://data.example.com/collections/buildings/tiles/CustomAntiguaTMS",
     "rel": "self",
     "type": "application/json",
     "title": "Buildings tileset tiled using custom Antigua TileMatrixSet"
    },
    {
     "href": "http://data.example.com/collections/buildings/tiles/CustomAntiguaTMS/{tileMatrix}/{tileRow}/{tileCol}.png",
     "templated": true,
     "rel": "item",
     "type": "image/png",
     "title": "Templated link for retrieving PNG tiles"
    },
    {
     "href": "http://data.example.com/tileMatrixSets/CustomAntiguaTMS",
     "rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
     "type": "application/json",
     "title": "Definition of custom Antigua TileMatrixSet"
    }
   ...
  ],
  "tileMatrixSetLimits":
  [
    ...
  ]
}

8.3.  Web API-defined TileMatrixSets

This section provides more details on the recommendations for Web API-defined TileMatrixSets. In the future, an extension of this standard could describe a mechanism to manage (create, update…​) tiling schemes for a Web API and make some of the recommendations expressed here mandatory.

8.3.1.  Web API landing page

The landing page provides links to start exploring the resources offered by the Web API. It mainly consists in a list of links. New links for TileMatrixSets on top of the common ones are introduced.

In the landing page, in JSON format, the links follow the link schema defined in the OGC API — Common. The following is an example fragment of the response to an OGC API — Tiles landing page.

Example — Web API Landing Page fragment with links to TileMatrixSet descriptions

{
  "links": [
    ...
    {
      "href": "http://data.example.org/tileMatrixSets?f=json",
      "rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes",
      "type": "application/json",
      "title": "List of tileMatrixSets implemented by this API in JSON"
    },
    {
      "href": "http://data.example.org/tileMatrixSets?f=html",
      "rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes",
      "type": "text/html",
      "title": "List of tileMatrixSets implemented by this API in HTML"
    }
  ]
}

8.3.2.  TileMatrixSets

The TileMatrixSets endpoint retrieves links to the descriptions of the tile matrix sets supported by the Web API in addition to the TileMatrixSets defined in the Annex D and the Annex E of the OGC 17-083r4 standard. The response follows the schema below.

Example 1 — Schema for the TileMatrixSets resource

  type: object
  required:
    - tileMatrixSets
  properties:
    tileMatrixSets:
      type: array
      items:
        $ref: 'https://api.swaggerhub.com/domains/UAB-CREAF/ogc-api-common/1.0.0#/components/schemas/id-link'

Example 2 — Schema for id-link from OGC API — Common used in TileMatrixSets resource.

id-link:
  type: object
  description: |-
    Reusable object that contains an id to a resource and links where the object is described or a representation retrieved. Typically it is useful for paths like `/resources` and `/resources/{resourceId}`.   `/resources` will respond an array of id-link listing the `resourceId` and the links to get it. /collections and /collections/{collectionId} is an exception to this pattern.
    The fact that `links` is an array can be used to advertise the same object representation in different formats.
  required:
    - id
    - links
  properties:
    id:
      type: string
    tileMatrixSetURI:
      type: string
      format: uri
      description: If the Tile Matrix Set is registered in the Definitions Server, this property should the reference to this definition
    title:
      type: string
    links:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/link'

Example 3 — Example for the TileMatrixSets resource

{
  "tileMatrixSets": [
    {
      "id": "MyWebMercatorQuad",
      "uri": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad"
      "title": "My Google Maps Compatible for the World",
      "links": [
        {
          "rel": "self",
          "href": "https://data.example.org/tileMatrixSets/MyWebMercatorQuad",
          "type": "application/json",
          "title": "Local definition of WebMercatorQuad TileMatrixSet"
        }
      ]
    }
  ]
}

8.3.3.  TileMatrixSet

The TileMatrixSet endpoint retrieves the full description of a tile matrix set supported by the Web API following the schema described in the OGC 17-083r4 standard. The response follows the TileMatrixSet schema.

Example — Fragment of a TileMatrixSet resource example

{
  "title": "My TileMatrixSet for the World",
  "id": "MyTMS",
  "uri": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad",
  "crs": "http://www.opengis.net/def/crs/EPSG/0/3857",
  "wellKnownScaleSet": "http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible",
  "tileMatrices": [
    ...
    {
      "title": "My zoom level 3",
      "id": "3",
      "scaleDenominator": 69885283.0035897,
      "cellSize": 19567.8792410051,
      "pointOfOrigin": [-20037508.3427892,20037508.3427892],
      "tileWidth": 256,
      "tileHeight": 256,
      "matrixWidth": 8,
      "matrixHeight": 8
    }
    ...
  ]
}

9.  Requirement Class “TileSets List”

9.1.  Overview

Requirements class 3: Requirements Class Tilesets List

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list

This class defines a resource called tilesets list that provides a list of available tilesets for a resource. It also defines a how to link to individual tileset resources, which are defined in the Clause 8. Refer to the Clause 10 and Clause 11 classes that describes two complementary mechanisms to associate tilesets to datasets and to geospatial data resources, respectively.

9.2.  Tilesets list

A tilesets list resource represents a list of sets of tiles, each one belonging to a particular TileMatrixSet. Each tileset resource returns the necessary metadata to enable a client application to formulate a tile request.

9.2.1.  Tilesets path

This class does not specify the full path to a tileset list but requires that it ends with /tiles.

Requirement 9

Label/req/tilesets-list/tileset-path
A

The API SHALL support a GET operation on a …​/tiles path returning a list of available tilesets

9.2.2.  Response

A successful GET response to a list of tilesets resource will respond with a data structure that lists the tileset URLs available (one for each Tile Matrix Set supported).

Example — Example of a tilesets list response

{
  "tilesets": [
    ...
    {
      "title" : "Buildings (WebMercatorQuad)",
      "tileMatrixSetURI" : "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad",
      "crs" : "http://www.opengis.net/def/crs/EPSG/0/3857",
      "dataType" : "vector",
      "links" : [
         {
           "rel": "self",
           "href": "http://data.example.com/collections/buildings/tiles/WebMercatorQuad",
           "type": "application/json"
         },
         {
           "rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
           "href": "http://data.example.com/tileMatrixSets/WebMercatorQuad",
           "type": "application/json"
         }
      ]
   }
   ...
  ]
}

Recommendation 8

Label/rec/tilesets-list/tileset_title
A

The tilesets array metadata (as defined by the 2D Tile Matrix Set and Metadata standard) subset SHOULD include a short human readable title

Permission 4

Label/per/tilesets-list/tilesets-api
A

An API document can advertise a single resource path (expressed as a URI template) to get multiple tilesets.

B

This URI template will use the {tileMatrixSetId} variable. The {tileMatrixSetId} variable will be interpreted as one of TileMatrixSet identifiers supported by the resource. In other words, it represents all the TileMatrixSets supported by the resource. Note that a {tileMatrixSetId} variable must NOT be used in the templated links of the tileset metadata.

10.  Requirement Class “Dataset Tile Sets”

10.1.  Overview

Requirements class 4: Requirements Class Dataset Tilesets

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/dataset-tilesets

This conformance class defines a mechanism to retrieve a list of tilesets for a dataset (a.k.a., a root resource) which may contain multiple geospatial data resources. It is used in conjunction with Clause 9 that specifies the response to this GET request.

Combined with the Clause 12 conformance class, it is also possible to select specific geospatial data resources (collections) to be combined and retrieved as tiles. For retrieving the list of tilesets for only one collection, the Clause 11 can also be used if it is implemented.

If a Web API offers several geospatial data resources for a dataset, it may limit the number of collections that can be retrieved together, and/or provide a limited subset of the collections by default.

10.2.  General

Recommendation 9

Label/rec/dataset-tilesets/api-common
A

An implementation of this standard SHOULD consider to implement the requirements specified in the http://www.opengis.net/spec/ogcapi-common-1/1.0/req/core Requirements Class of OGC API — Common — Part 1: Core version 1.0.0.

This building block stays flexible and does not require implementation of OGC API — Common — Part 1, allowing for other Web API architectures outside the OGC API framework to adopt it. However, a server implementing other OGC APIs is expected to implement OGC API — Common — Part 1. In practice, this means that the landing page and the conformance page follow OGC API — Common — Part 1 requirement classes when used. It is also possible to combine this building block with OGC API — Features — Part 1: Core, version 1.0.

10.3.  Web API landing page

The landing page provides links to start exploring the resources offered by the Web API. It mainly consists of a list of links to root resources. This conformance class requires including in the landing page one or more link(s) to list(s) of tilesets available for the dataset.

10.3.1.  Response

Requirement 11

Label/req/dataset-tilesets/landingpage
A

If the API has a mechanism for exposing root resources (e.g., a landing page), the API SHALL advertise at least one URIs to retrieve tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector, http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage.

In the landing page, in JSON format, the links follow the link schema defined in the OGC API — Common — Part 1: Core or in OGC API — Features — Part 1: Core 1.0. Below you can find an example fragment of the response to an OGC API — Tiles landing page showing links to dataset tilesets.

Example — Web API Landing Page fragment that advertises dataset tilesets

{
  "links": [
    ...
    {
       "href": "http://data.example.org/tiles",
       "rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector",
       "type": "application/json",
       "title": "List of available vector features tilesets for the dataset"
    },
    {
       "href": "http://data.example.org/tiles",
       "rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-map",
       "type": "application/json",
       "title": "List of available map tilesets for the dataset"
    }
  ]
}

Recommendation 10

Label/rec/dataset-tilesets/landingpage
A

The URI to the dataset tilesets will be /tiles.

10.4.  Dataset tilesets

The dataset tilesets operation provides essential tileset metadata and links to tilesets resources allowing to request tiles from the dataset.

10.4.1.  Operation

Requirement 12

Label/req/dataset-tilesets/operation
A

The dataset resource (the root resource) SHALL have at least one tileset accessible at …​/tiles supporting an HTTP GET operation.

B

The URI SHALL be composed of two parts: the initial part is the URI of the dataset resource (the root resource) that can be represented as tiles and the final part follows the pattern /tiles.

The request of this operation has no parameters.

10.4.2.  Response

A successful response to a dataset tilesets list request is a list of tilesets as defined by the Clause 9 and Clause 8.

10.5.  Tiles

The Clause 7 defines how to retrieve a single tile from a tileset available for the dataset.

10.5.1.  Response

The response is expected to represent the dataset as a whole. In a Web API providing access to a complex dataset formed by several geospatial data resources, it can be useful to select specific sub-resources of interest when requesting data from this dataset. This can be achieved with the use of the Clause 12 or as an automatic decision by the server.

Recommendation 11

Label/rec/dataset-tilesets/geodata-selection
A

When it is possible and sensible, all geospatial data resources (/collections) SHOULD be represented in the tiles.

Permission 5

Label/per/dataset-tilesets/geodata-selection
A

If it is not possible and sensible to represent all geospatial data resources (/collections) in tiles (e.g., it compromises performance or tiles are overcrowded with too many elements), the server MAY select only the most significant geospatial data resources.

11.  Requirement Class “Geo Data Resource TileSets”

11.1.  Overview

Requirements class 5: Requirements Class Geodata Tilesets

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geodata-tilesets

This conformance class assumes that data is organized into one or more geospatial data resources (e.g., the “collections” OGC API — Common — Part 2: Geospatial data). Geospatial data resources are referenced using URIs.

It defines how to specify link(s) to one or more list(s) of tilesets containing a representation of this geospatial data resource (path). It is used in conjunction with Clause 9 that specifies the response to this GET request.

11.2.  General

Recommendation 12

Label/rec/geodata-tilesets/api-common
A

An implementation of this standard SHOULD consider to implement the requirements specified in the http://www.opengis.net/spec/ogcapi-common-1/1.0/req/core and http://www.opengis.net/spec/ogcapi-common-2/1.0/req/collections Requirements Classes of the OGC API — Common — Part 1 and 2 version 1.0 standards.

This building block depends on OGC API — Part 2: Geospatial data, but stays flexible and does not require implementation of OGC API — Common — Part 1, allowing for other Web API architectures outside the OGC API framework to adopt it. However, a server implementing other OGC APIs is expected to implement OGC API — Common — Part 1. In practice, this means that the landing page and the conformance page follow OGC API — Common core requirement classes when used. It is also possible to combine this building block with OGC API — Features — Part 1: Core, version 1.0 instead of _OGC API — Common — Part 2.

11.3.  Geospatial data resources

This standard does not specify how geospatial data resources are exposed in the Web API and if they can be retrieved as geospatial data (e.g., feature items). For example, OGC API — Features — Part 1: Core, version 1.0 includes the definition of collections and each collection is available in the /collections/{collectionId} path. OGC API — Common will provide a similar mechanism. Other paths in the Web API could also give access to geospatial data resources.

NOTE  The concept of geospatial data resource path replaces the concept of “layer” found in WMTS 1.0, but is intended to result in a better integration between data visualization and data access.

For example, an implementation of the OGC API — Features — Part 1: Core returns a list of links that include geospatial aspects for each geospatial data resource in the /collections/{collectionId} path. OGC API — Common — Part 2: Geospatial data provides a similar mechanism. In the JSON response, the links array is where links to lists of tilesets must be added.

Example — Fragment of a collection with a links array including two items pointing to lists of tilesets (one for vector tiles and one for map tiles)

[
  ...
  {
    "id": "buildings",
    "title": "Buildings in the city of Bonn",
    "description": "This collection contains buildings",
    "attribution": "OpenStreetMap",
    "extent": {
      ...
    }
    "links": [
      ...
      {
        "href": "http://data.example.com/collections/buildings/tiles",
        "rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector",
        "type": "application/json",
        "title": "List of available vector tilesets for the collection of Bonn buildings"
      },
      {
        "href": "http://data.example.com/collections/buildings/tiles",
        "rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-map",
        "type": "application/json",
        "title": "List of available map tilesets for the collection of Bonn buildings"
      }
    ]
  }
  ...
]

11.4.  Geospatial data resources tilesets list

The geospatial data resource tilesets operation provides essential tileset metadata and links to tilesets resources allowing to request tiles from the resource.

11.4.1.  Operation

Requirement 14

Label/req/geodata-tilesets/operation
A

The geospatial data resource SHALL have an associated list of at least one tileset accessible at …​/tiles supporting an HTTP GET operation.

B

The URI SHALL be composed of two parts: the initial part is the URI of the geospatial data resource that can be represented as tiles and the final part follows the pattern /tiles.

This standard does not specify the need for any additional query parameter in the GET request.

11.4.2.  Response

A successful response to a geospatial data tilesets request is a list of tilesets as defined by the Clause 9 and Clause 8.

11.5.  Tiles

A tile resource is a fragment of a larger single geospatial data resource that is spatially constrained at the boundaries of the selected tile in a tile matrix set. Details of the operation are described in the Clause 7.

12.  Requirement Class “Collections Selection”

12.1.  Overview

Requirements class 6: Requirements Class Collections Selection

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi-common-2/1.0/req/collections
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/collections-selection

In a Web API providing access to a complex dataset formed by several geospatial data resources, it can be useful to select specific sub-resources of interest when requesting data from this dataset. This requirements class defines how to include a query parameter when requesting a resource (e.g., dataset tiles) to specify which geospatial data resources (a.k.a. collections) should be used to generate the response.

This conformance class can be used e.g. in conjunction with the Clause 10 conformance class or in conjunction with an equivalent conformance class in OGC API — Maps.

12.2.  Operation

By default, the geospatial data resources to be included in the dataset tiles responses are unspecified but should represent the dataset as a whole. This class adds a mechanism to select the geospatial data resources to be used to generate the derived resources (e.g., maps or tiles). In practice this enables the capability to generate resources involving more than one geospatial data sub-resource.

12.2.1.  Parameter collections

Requirement 15

A

An operation that acts on a resource consisting of multiple geospatial data sub-resources (e.g., a resource derived from a root dataset) SHALL support an optional parameter collections with the following characteristics (shown as OpenAPI Specification 3.0 fragment)

  name: collections
  in: query
  required: false
  style: form
  explode: false
  schema:
    type: array
    items:
      type: string
B

The parameter collections SHALL be supported by tileset resources and tiles resources for origins consisting of multiple geospatial data sub-resources (e.g. dataset tileset at {datasetAPI}/tiles/WebMercatorQuad and dataset tiles at {datasetAPI}/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}).

C

Implementations SHALL support a comma-separated list of either geospatial resource identifiers (e.g., collectionId’s) and/or full URLs to geospatial resource identifiers.

When this parameter refers to more than one geospatial data resource, this parameter will use the comma (“,”) as the separator between the resource identifiers in the list. Additional white space will not be used to delimit list items. If a geospatial data resource identifier includes a space or comma, it shall be escaped using the URL encoding rules (IETF RFC 2396).

Permission 6

Label/per/collections-selection/valid-collections
A

An implementation MAY return an error when the specified list of collections is not supported, for reasons such as an incompatible combination, or an unsupported encoding or TileMatrixSet for some of the selected collections.

12.2.2.  Response

Requirement 16

Label/req/collections-selection/collections-response
A

Only the collections of geospatial data enumerated in the values of the collections parameter SHALL be used to generate the responses for the resources (tiles and tilesets) to which they apply.

B

If there is more than one collection name and the style applied does not specify otherwise, the comma-separated collections SHALL be included in the result starting by the first (leftmost) and ending by the last (rightmost).

NOTE  In map tiles, sub-requirement B will result in the first collection being portrayed in the bottom with the others rendered on top of the previous ones, one by one (the rightmost collection will become topmost in the portrayal).

12.2.3.  Error conditions

If the value of the parameter collections contains a resource id of URI that does not exist on the Web API, the status code of the response is 400.

If the value of the parameter collections has a wrong format or combines one of more geospatial data resources that are not compatible (e.g., they do not have a compatible value specified by other parameters in the request), the status code of the response is 400.

13.  Requirement Class “DateTime”

13.1.  Overview

Requirements class 7: Requirements Class Datetime

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/datetime

This conformance class defines the way date and time can be used as a parameter to filter the content in the tile resource. This conformance class is importing most of the functionality from OGC API — Commons.

13.2.  Describing the temporal extent

Depending on the type of resource, the way the temporal extent and the resolution of the datetime values available for the client to request are described may be different:

  • For Geodata Tilesets, the collection description should specify the temporal extent of the resources. Tiles can be requested inside this extent. If the extent is specified in a way that instant values are provided (e.g. by listing them or by including a resolution) then it be possible to request tiles for these instants.

  • If a tileset metadata is available, a future revision of 2D tile matrix set standard could take precedence providing more details on the available values for datetime.

13.3.  datetime query parameter request and response

This section is based on the OGC API common datetime module that is entirely reproduced here.

Requirements Module
http://www.opengis.net/spec/ogcapi-common-2/1.0/rm/datetime
Target typeWeb API Query Parameter

The datetime parameter selects resources based on their temporal extent. The definition of temporal extent is specific to the resource type being filtered.

The datetime parameter is defined as follows:

Requirement 17

A

The datetime parameter SHALL have the following characteristics (using an OpenAPI Specification 3.0 fragment):

name: datetime
in: query
required: false
schema:
  type: string
style: form
explode: false
B

Temporal geometries are either a date-time value or a time interval. The parameter value SHALL conform to the following syntax (using ABNF):

interval-closed     = date-time "/" date-time
interval-open-start = [".."] "/" date-time
interval-open-end   = date-time "/" [".."]
interval            = interval-closed / interval-open-start / interval-open-end
datetime            = date-time / interval
C

The syntax of date-time is specified by RFC 3339, 5.6.

D

Open ranges in time intervals at the start or end are supported using a double-dot (..) or an empty string for the start/end.

While the processing of the datetime parameter is specific to the resource and operation for which it is applied, there is a general set of requirements which all implementations must address.

Requirement 18

Label/req/collections/rc-datetime-response

For each UML class defined or referenced in the Relief Package:

A

If the datetime parameter is provided by the client and supported by the server, then only resources that have a temporal geometry that intersects the temporal information in the datetime parameter SHALL be part of the result set. If a resource has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties.

B

The datetime parameter SHALL match all resources in the collection that are not associated with a temporal geometry.

“Intersects” means that the time (instant or period) specified in the parameter datetime includes a timestamp that is part of the temporal geometry of the resource (again, a time instant or period). For time periods this includes the start and end time.

Table 10

Note

ISO 8601-2 distinguishes open start/end timestamps (double-dot) and unknown start/end timestamps (empty string). For queries, an unknown start/end has the same effect as an open start/end.

Example 1 — A date-time

February 12, 2018, 23:20:52 UTC:

datetime=2018-02-12T23%3A20%3A52Z

For resources with a temporal property that is a timestamp (like lastUpdate), a date-time value would match all resources where the temporal property is identical.

For resources with a temporal property that is a date or a time interval, a date-time value would match all resources where the timestamp is on that day or within the time interval.

Example 2 — Intervals

February 12, 2018, 00:00:00 UTC to March 18, 2018, 12:31:12 UTC:

datetime=2018-02-12T00%3A00%3A00Z%2F2018-03-18T12%3A31%3A12Z

February 12, 2018, 00:00:00 UTC or later:

datetime=2018-02-12T00%3A00%3A00Z%2F..

March 18, 2018, 12:31:12 UTC or earlier:

datetime=..%2F2018-03-18T12%3A31%3A12Z

A template for the definition of the parameter in YAML according to OpenAPI 3.0 is available at datetime.yaml.

13.4.  subset=datetime query parameter request and response

The behavior of the subset parameter is imported from the OGC API — Common subset module. The entire module is reproduced here. However, some considerations may not apply for datetime and the generic behavior is limited by predetermining the axis name of the generic datetime in an additional requirement, a permission and a recommendation at the end of this subsection.

Requirements Module
http://www.opengis.net/spec/ogcapi-common-2/1.0/rm/subset
Target typeWeb API Query Parameter

The subset parameter is used to select a subset of a geospatial resource.

The subset parameter is defined as follows:

Requirement 19

A

The subset parameter SHALL have the following characteristics (using an Augmented Backus Naur Form (ABNF) fragment):

  SubsetSpec:       "subset"=axisName(intervalOrPoint)
  axisName:         {text}
  intervalOrPoint:  interval \| point
  interval:         low : high
  low:              point \| *
  high:             point \| *
  point:            {number} \| "{text}"

  Where:
     \" = double quote = ASCII code 0x42,
     {number} is an integer or floating-point number, and
     {text} is some general ASCII text (such as a time and date notation in ISO 8601).
B

The axis name SHALL correspond to one of the axis of the Coordinate Reference System (CRS) of the target resource or else return a 400 status code.

C

If the intervalOrPoint values fall entirely outside the range of valid values defined for the identified axis, a 204 status code SHALL be returned.

D

For a CRS where an axis can wrap around, such as subsetting across the dateline (anti-meridian) in a geographic CRS, a low value greater than high SHALL be supported to indicate an extent crossing that wrapping point.

NOTE  When the intervalOrPoint values fall partially outside of the range of valid values defined by the CRS for the identified axis, the service is expected to return the non-empty portion of the resource resulting from the subset.

While the processing of the subset parameter is specific to the resource and operation for which it is applied, there is a general set of requirements which all implementations must address.

Requirement 20

Label/req/collection/subset-response
A

Only that part of the resource that falls within the bounds of the subset expression SHALL be returned.

B

If a lower limit of the subset expression is populated with an asterix “*” THEN the minimum extent of the resource along that axis SHALL be selected.

C

If an upper limit of the subset expression is populated with an asterix “*” THEN the maximum extent of the resource along that axis SHALL be selected.

Requirement 21

Label/req/datetime/axis
A

To subset a generic time dimension, the server SHALL support “datetime” as axisname in the subset parameter

Example 1 — A date-time (subset)

February 12, 2018, 23:20:52 UTC:

subset=datetime(%222018-02-12T23%3A20%3A52Z%22)

For resources with a temporal property that is a timestamp (like lastUpdate), a date-time value would match all resources where the temporal property is identical.

For resources with a temporal property that is a date or a time interval, a date-time value would match all resources where the timestamp is on that day or within the time interval.

Example 2 — Intervals (subset)

February 12, 2018, 00:00:00 UTC to March 18, 2018, 12:31:12 UTC:

subset=datetime(%222018-02-12T00%3A00%3A00Z%22%3A%222018-03-18T12%3A31%3A12Z%22)

February 12, 2018, 00:00:00 UTC or later:

subset=datetime(%222018-02-12T00%3A00%3A00Z%22%3A*)

March 18, 2018, 12:31:12 UTC or earlier:

subset=datetime(*%3A%222018-03-18T12%3A31%3A12Z%22)

13.5.  Actual date & time response header

Recommendation 14

A

The server SHOULD add a HTTP header with OGCAPI-datetime as a name and a temporal geometry as a value, to indicate the instant or the temporal interval of the content of the resource. The temporal geometries value shall conform to the following syntax (using ABNF):

interval     = instant "/" instant
datetime     = instant / interval

The syntax of instant is specified by RFC 3339, 5.6.

13.6.  Closest date & time permission

Permission 7

Label/per/datetime/closest
A

In case the requested tile is not available in the exact requested datetime for the tile matrix, tile column and tile row, the closest or last previous time for which data is available MAY be returned by the server.

NOTE  An Earth Observation use case where this permission is useful is to allow retrieving a tile of the last datetime where imagery is available, taking into account that a certain geographic area may only be observed at an interval of “every few days” and availability may be irregular and conditioned by clouds.

14.  Requirement Class “OpenAPI Specification 3.0” API definition

14.1.  Overview

Requirements class 8: Requirements Class OpenAPI 3.0

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/ogcapi_common-1/1.0/req/oas30
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/oas30

This conformance class defines particularities of providing a definition of a Web API implementing this standard using OpenAPI Specification version 3.0.

14.2.  Web API OpenAPI description

The OpenAPI definition provides a description of the complete list of API resources. Reading this description, an application will have the full picture of the resources that the API provides, how to retrieve them, and what responses are expected for successful and unsuccessful requests. Without this API description an application will be forced to traverse all links starting by the landing page to get an equivalent full list of resources.

The OGC API — Common — Part 1: Core (oas30) requirement class provides many details on general requirements that this requirements class adopts by dependency. In addition extra requirements are provided. Also, the OGC API — Common requirement class provides details on how to request an API definition.

14.2.1.  Response

14.2.1.1.  Completeness

The OpenAPI definition resulting as a response of this request need to take into consideration the relevant resources specified in this standard.

Requirement 22

Label/req/oas30/completeness
A

The OpenAPI definition SHALL provide paths for all tileset, tilesets list and tile resources provided by the API instance

B

The paths defined in the OpenAPI definition SHALL be consistent with the links to the same resources provided by the landing page, collections, tileset and tilesets list resources.

C

The paths defined in the OpenAPI definition SHALL provide the description of the parameters that the tileset and tile resources need to operate that are specified in corresponding conformance classes

14.2.1.2.  Reusable API components

Reusable components for creating OpenAPI definitions for implementations of this OGC API can be found in http://schemas.opengis.net/ogcapi/tiles/part1/1.0/openapi

NOTE  While this specification is in draft status, the components are available from https://github.com/opengeospatial/ogcapi-tiles/tree/master/openapi .

A server implementations of this OGC API can use the content in the openapi folder to generate a response for the openapi description. The ogcapi-tiles-1.yaml includes paths and components. An implementation should only include the paths that are implemented and remove the references to the rest. The components part includes parameters, responses and schemas that can be reused as-is. The api folder contains JSON files that are templates with enumerated values for collections (all, coverages or vector), styles, tileMatrixSets. A particular implementation of this API should enumerate the actual resources exposed by the API in the same way. The server can select to dynamically implement responses to /api/* (where * is replaced by all-collections, styles,…​ ) or hardcode the /api/* files with the actual list of resource identifiers in the enumerations.

To improve performance, the whole content of this folder can be bundled in a single document by executing a tool such as swagger-cli. This can be served for the OGC API — Common — Part 1 service-desc link from the landing page.

14.2.1.3.  Path Operation Ids

The OpenAPI definition provides to a client application a set of paths that the client can use to interact with the API and get new resources. The OpenAPI description of each path provides a description of some parameters to use in the request and what to expect in the response. However, this standard is not proposing a fixed set of paths so there is an issue identifying the requirements classes pertaining to each path in an API instance. In other words, the OpenAPI description alone does not provide enough information and there is a need to identify the requirements classes pertaining to a resource (a path) and complete the information necessary for the client to implement the necessary logic to generate the request and understand the response. This standard proposes a suffix mechanism to be applied to the operationId property of the path to list the requirement classes pertaining to each path. Each path should have a unique operationId suffix, so it is expected that the OpenAPI instance provides a prefix to the proposed suffixes that make each operationId unique.

Requirement 23

Label/req/oas30/operation-id
A

The paths defined in the OpenAPI definition SHALL have an operationId value ending with the relevant dot-separated suffix corresponding to the resource as specified in Table 11.

Table 11 — OpenAPI operationId suffixes

OriginStyledData TypeResourceoperationId suffixes1
With the resource types and origins described in this document
DataSet6VectorTileSetsList5.dataset.vector.getTileSetsList
DataSet6VectorTileSet4.dataset.vector.getTileSet
DataSet6VectorTile3.dataset.vector.getTile
DataSet6Styled8VectorTileSetsList5.dataset.style.vector.getTileSetsList
DataSet6Styled8VectorTileSet4.dataset.style.vector.getTileSet
DataSet6Styled8VectorTile3.dataset.style.vector.getTile
DataSet6Map10TileSetsList5.dataset.map.getTileSetsList
DataSet6Map10TileSet4.dataset.map.getTileSet
DataSet6Map10Tile3.dataset.map.getTile
DataSet6Styled8Map10TileSetsList5.dataset.style.map.getTileSetsList
DataSet6Styled8Map10TileSet4.dataset.style.map.getTileSet
DataSet6Styled8Map10Tile3.dataset.style.map.getTile
Collection7VectorTileSetsList5.collection.vector.getTileSetsList
Collection7VectorTileSet4.collection.vector.getTileSet
Collection7VectorTile3.collection.vector.getTile
Collection7Styled8VectorTileSetsList5.collection.style.vector.getTileSetsList
Collection7Styled8VectorTileSet4.collection.style.vector.getTileSet
Collection7Styled8VectorTile3.collection.style.vector.getTile
Collection7Coverage9TileSetsList5.collection.coverage.getTileSetsList
Collection7Coverage9TileSet4.collection.coverage.getTileSet
Collection7Coverage9Tile3.collection.coverage.getTile
Collection7Map10TileSetsList5.collection.map.getTileSetsList
Collection7Map10TileSet4.collection.map.getTileSet
Collection7Map10Tile3.collection.map.getTile
Collection7Styled8Map10TileSetsList5.collection.style.map.getTileSetsList
Collection7Styled8Map10TileSet4.collection.style.map.getTileSet
Collection7Styled8Map10Tile3.collection.style.map.getTile
With other potential resource types
DataSet6otherTileSetsList5.dataset.*.getTileSetsList
DataSet6otherTileSet4.dataset.*.getTileSet
DataSet6otherTile3.dataset.*.getTile
DataSet6Styled8otherTileSetsList5.dataset.style.*.getTileSetsList
DataSet6Styled8otherTileSet4.dataset.style.*.getTileSet
DataSet6Styled8otherTile3.dataset.style.*.getTile
Collection7otherTileSetsList5.collection.*.getTileSetsList
Collection7otherTileSet4.collection.*.getTileSet
Collection7otherTile3.collection.*.getTile
Collection7Styled8otherTileSetsList5.collection.style.*.getTileSetsList
Collection7Styled8otherTileSet4.collection.style.*.getTileSet
Collection7Styled8otherTile3.collection.style.*.getTile
With other potential origins
otherVectorTileSetsList5#.vector.getTileSetsList
otherVectorTileSet4#.vector.getTileSet
otherVectorTile3#.vector.getTile
otherStyled8VectorTileSetsList5#.style.vector.getTileSetsList
otherStyled8VectorTileSet4#.style.vector.getTileSet
otherStyled8VectorTile3#.style.vector.getTile
otherCoverage9TileSetsList5#.coverage.getTileSetsList
otherCoverage9TileSet4#.coverage.getTileSet
otherCoverage9Tile3#.coverage.getTile
otherMap10TileSetsList5#.map.getTileSetsList
otherMap10TileSet4#.map.getTileSet
otherMap10Tile3#.map.getTile
otherStyled8Map10TileSetsList5#.style.map.getTileSetsList
otherStyled8Map10TileSet4#.style.map.getTileSet
otherStyled8Map10Tile3#.style.map.getTile
otherotherTileSetsList5#.*.getTileSetsList
otherotherTileSet4#.*.getTileSet
otherotherTile3#.*.getTile
otherStyled8otherTileSetsList5#.style.*.getTileSetsList
otherStyled8otherTileSet4#.style.*.getTileSet
otherStyled8otherTile3#.style.*.getTile`
1 ‘*’ represents a resource type to be defined in another relevant standard. ‘#’ represents an optional origin that could be defined in another relevant standard. 2 The suffixes derived from these resource types are not required by this standard and will be proposed by the relevant standard defining them. 3 The Tile resource is defined in Clause 7. 4 The TileSet resource is defined in Clause 8. 5 The TileSetsList resource is defined in Clause 9. 6 The DataSet origin is defined in Clause 10 and depends on OGC API — Common — Part 1: Core. 7 The Collection origin is defined in Clause 11 conformance class and depends on the Collections conformance class defined in OGC API — Common — Part 2: Geospatial data 8 Styled tilesets rely on the ability to list styles defined in OGC API — Styles2. 9 Coverage tilesets rely on the Coverage tiles conformance class defined in OGC API — Coverages — Part 1: Core2. 10 Map tilesets rely on the Map tiles conformance class defined in OGC API — Maps — Part 1: Core2.

15.  Requirements class “XML” Tileset Metadata

15.1.  Overview

This standard provides several resources describing the service (landing page), the geospatial data resources, the tileset lists and the tilesets informing the client on how to retrieve tiled data. XML is a data-interchange format designed to facilitate structured data interchange between applications. The intention of this section is to define an XML encoding that could be implemented by Tiles Web APIs, but not to exclude the possibility of defining additional metadata encodings that may be offered by a Tiles Web API. Web APIs may adopt this XML conformance class and declare conformance to it in the list of conformance classes supported by the Web API. The declaration of XML in the conformance classes supported does not mean that all the resources provided by the Web API support an XML representation, but a general support of XML is expected.

This clause specifies a requirements class for an XML representation that may be implemented by an OGC Web API for the tilesets list and a tileset resources in addition to the JSON representation required by Clause 8 and Clause 9.

If the service provides local TileMatrixSet definitions, it is recommended that those resources also support an XML representation conforming to the XML schema specified in the Two Dimensional Tile Matrix Set and Tileset Metadata standard.

Please refer to OGC API — Common conformance classes defining the XML representation of common resources such as the landing page, conformance and collections.

15.2.  TileSet and TileSets List XML representation

Requirements class 9: Requirements Class XML

Target typeWeb API
Dependencyhttp://www.opengis.net/spec/tms/2.0/req/xml-tilesetmetadata
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/xml

15.2.1.  Operation

Requirement 24

Label/req/xml/definition
A

200-responses of the server SHALL support the application/xml media type for the Tilesets list and TileSet resources.

15.2.2.  Response

Requirement 25

A

Every request to a TileSets list or TileSet resource which:

  1. Receives a 200-response

  2. with the Content-Type header set to application/xml

SHALL include, or link to, a payload encoded according to the Extensible Markup Language (XML) 1.0

B

The payload for these responses SHALL conform with the XML Schema specified for the resource in the OGC 17-083r4: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata.

16.  Requirements classes for tile encodings

The OGC API Tiles is designed to support tiling data that can potentially be encoded and provided in many of the existing geospatial formats or new ones that could be invented in the future. Web APIs may adopt these encodings and declare conformance to them in the list of conformance classes supported by the Web API. The intention of this section is NOT to limit the number of encodings offered by a Tiles Web API but to provide a minimum set of encodings that could be implemented by many Tiles Web APIs as well as to provide a practical way to test conformance to the standard. For each of these encodings, a requirements class is defined. Web APIs are free to support other encodings and data formats that can be convenient in each case, and use them despite the fact that they may not be listed as supported conformance classes by the Web API. In addition, the declaration of an encoding in the conformance classes supported does not mean that all the resources provided by the Web API should support all of them. Partial support could be conditioned by the different the nature of the data behind each collection.

16.1.  Overview

This clause specifies six pre-defined requirements classes for encodings to be used by the tiles of the OGC API implementation:

NOTE  None of the encodings specified here is mandatory and an implementation of this standard may implement none of them but implement other encodings instead.

16.2.  Requirement Class “PNG”

One fundamental use case for tiles is immediate visualization in a web browser. In these circumstances, selecting an encoding that can be natively interpreted by the web browser is fundamental. The PNG is one of the most popular formats in de web defined by the ISO Information technology — Computer graphics and image processing — Portable Network Graphics (PNG): Functional specification. ISO/IEC 15948:2003 (E), also available by the W3C in https://www.w3.org/TR/PNG.

PNG supports lossless data compression. PNG supports palette-based images (with palettes of 24-bit RGB or 32-bit RGBA colors), grayscale images (with or without an alpha channel for transparency), and full-color non-palette-based RGB or RGBA images. The PNG working group designed the format for transferring images on the Internet, not for professional-quality print graphics; therefore non-RGB color spaces such as CMYK are not supported.

Requirements class 10: Requirements Class PNG

Target typeWeb API
Dependency[ISO_IEC_15948_standard]
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/png

Requirement 26

Label/req/png/content
A

Every 200-response of the server with the media type image/png SHALL be a PNG document representing only one tile

B

The colors of the PNG SHALL represent the geospatial features or coverage values in the tile.

C

The alpha channel of the PNG SHALL be used when partial transparency is required

D

All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules

NOTE  The way the colors in the PNG are mapped to geospatial features or coverage values is out of scope of this standard. However, a common set of portrayal rules for all tiles representing part of the same resource is essential, as adjacent tiles are normally represented one next to the other and presented as a single image to the user.

16.3.  Requirement Class “JPEG”

One fundamental use case for tiles is immediate visualization in a web browser. In these circumstances, selecting an encoding that can be natively interpreted by the web browser is fundamental. The JPEG is one of the most popular formats in de web defined by the ITU-T Recommendation T.81 and the ISO/IEC 10918-1.

The JPEG compression algorithm operates at its best on photographs and paintings with smooth variations of tone and color. It is best used for color and grayscale still images, but not for binary images. JPEG is also the most common format saved by digital cameras. However, JPEG is not well suited for line drawings and other textual or iconic graphics, where the sharp contrasts between adjacent pixels can cause noticeable artifacts. Such images are better saved in a lossless graphics format such as PNG. Because JPEG is a lossy compression method, which reduces the image fidelity, it is inappropriate for exact reproduction of imaging data.

Requirements class 11: Requirements Class JPEG

Target typeWeb API
Dependency[ISO_IEC_10918-1]
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/jpeg

Requirement 27

Label/req/jpeg/content
A

Every 200-response of the server with the media type image/jpeg SHALL be a JPEG document representing only one tile

B

The colors of the JPEG SHALL represent coverage values in the tile.

C

All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules

NOTE 1  The way the colors in the JPEG are mapped to geospatial features or coverage values is out of scope of this standard. However, a common set of portrayal rules for all tiles representing part of the same resource is essential, as adjacent tiles are normally represented one next to the other and presented as a single image to the user.

NOTE 2  JPEG is an ideal support for remote sensing imagery. The use of JPEG to represent linear features or color solid polygons is not recommended.

16.4.  Requirement Class “TIFF”

One use case for tiles is to distribute fragmented coverage values as regular grids. In these circumstances, selecting an encoding that is able to story grid values in their original format and eventually compress them using lossless compression is the right solution. The TIF is one of the older formats but still one of the most popular formats to preserve arrays of data values and defined by the TIFF v6 specification owned by Adobe Systems.

TIFF is a flexible, adaptable file format for handling images and data. The ability to store data in a lossless format makes a TIFF file a useful image archive, because, unlike standard JPEG files, a TIFF file using lossless compression such as PackBits or LZW compression.

Requirements class 12: Requirements Class TIFF

Target typeWeb API
Dependency[TIFF_V6]
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tiff

Requirement 28

Label/req/tiff/content
A

Every 200-response of the server with the media type image/tiff SHALL be a TIFF document representing only one tile

B

The TIFF file SHALL be organized in strips (avoiding organization in internal tiles).

C

All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules or represent data with the same reference and units of measure.

NOTE  TIFF is an ideal support for geospatial grid data in its original format. However, it also can be used for image palette or RGB imagery.

Recommendation 15

Label/rec/tiff/geotiff
A

A TIFF encoding SHOULD include georeference information in GeoTIFF format.

Requirement 29

Label/req/tiff/geotiff
A

If the TIFF encoding incorporates GeoTIFF georeference, this information SHALL be consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol

16.5.  Requirement Class “NetCDF”

For a case of multidimensional regular grid tiles, as defined in Annex J of the 2D-TMS Standards [OGC 17-083r4], there is a need for a format able to store multidimensional data in a natural way. The NetCDF is one of the most popular formats for scientific data that is able store multi-dimensional arrays of data values. It is defined by the UCAR-Unidata.

Requirements class 13: Requirements Class NetCDF

Target typeWeb API
DependencyOGC 10-090r3 OGC Network Common Data Form NetCDF Core Encoding Standard version 1.0
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/netcdf

Requirement 30

Label/req/netcdf/content
A

Every 200-response of the server with the media type application/netcdf or application/x-netcdf SHALL be a NetCDF document representing only one tile

B

The NetCDF file SHALL contain only data in two or more dimensions

Requirement 31

Label/req/netcdf/geo
A

If the NetCDF encoding incorporates georeference, this information SHALL be consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol

16.6.  Requirement Class “GeoJSON”

GeoJSON is a commonly used format for representing features with geometries and other properties. It is simple to understand and well supported by tools and software libraries. Since most Web developers are comfortable with using a JSON-based formats supporting GeoJSON is recommended for vector tiles, if the feature data can be represented in GeoJSON for the intended use.

Requirements class 14: Requirements Class GeoJSON

Target typeWeb API
Dependency[GeoJSON]
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geojson

Requirement 32

For each UML class defined or referenced in the Relief Package:

A

Every 200-response of the server with the media type application/geo+json SHALL be a GeoJSON document representing only one tile.

B

The root of the GeoJSON document SHALL be

  • a GeoJSON FeatureCollection Object for features, or

  • a GeoJSON Feature Object for a single feature.

C

Regardless of the TileMatrixSet CRS, the geometry coordinates SHALL be in CRS84 as stated in the GeoJSON standard unless a prior arrangement applies to use an alternative coordinate reference system. The fact that a TileMatrixSet is used does not constitute a prior arrangement. For example, an extension could negotiate another CRS for coordinates with a query parameter.

Permission 8

Label/rec/geojson/overflow
A

A GeoJSON content of a tile can contain features that are partially outside of the tile bounding box.

16.7.  Requirement Class “Mapbox Vector Tiles”

Mapbox Vector Tiles is a well known format for representing features with geometries in tile. The Mapbox Vector Tile format uses Google Protocol Buffers as a encoding format. Protocol Buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured binary data. A Mapbox Vector Tile represents data based on a square extent within a tile matrix set. However, a Mapbox Vector Tile does not contain information about its bounds and TileMatrixSet. The file format assumes that the client knows the bounds and TileMatrixSet of the file before decoding it.

Requirements class 15: Requirements Class MVT

Target typeWeb API
Dependency[Mapbox_Vector_Tiles]
Dependencyhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/mvt

Requirement 33

Label/req/mvt/content
A

Every 200-response of the server with the media type application/vnd.mapbox-vector-tile SHALL be a Mapbox Vector Tile document representing only one tile.

B

A feature SHALL contain a geometry field. A feature SHALL contain a type field as described in the Geometry Types section.

C

The grid space for the MVT coordinates SHALL map linearly to the coordinates in the tile extent expressed in the Tileset CRS unless a prior arrangement applies to use an alternative CRS; and in this case the linear mapping SHALL be done to the alternative CRS and not with the Tileset CRS. For example, an extension could negotiate another CRS for coordinates with a query parameter. In particular the 0,0 coordinate in the MVT maps to the top-left corner of the tile. The bottom-right corner of the tile corresponds the bottom-right corner of the MVT grid.

NOTE  The support of Mapbox Vector Tiles does not make the OGC API dependent on the Mapbox Vector Tile Specification. The support of Mapbox Vector Tiles is completely optional in a Web API. This requirements class is completely independent of the version of Mapbox Vector Tiles and its future evolution.


Annex A
(normative)
Abstract Test Suite

An implementation of this standard must satisfy the following system characteristics to be conformant with this specification.

A.1.  Conformance Class Core

Conformance class A.1

SubjectCore
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core

A.1.1.  Declaration of conformance classes

A.1.1.1.  Response

Table A.1

Abstract Test 1

/conf/core/conformance-success

Test Purpose

Validate that the Conformance Declaration response complies with the required structure and contents.

Requirement

/req/core/conformance-success

Test Method
  1. If there is a Conformance Class declaration document, validate the response document against OpenAPI 3.0 schema confClasses.yaml

  2. Validate that the document includes the conformance class “http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core”

A.1.2.  A tile

A.1.2.1.  Operation

Table A.2

Abstract Test 2

/conf/core/tc-op

Test Purpose

With a provided template, validate that tiles are available for the right GET request.

Requirement

/req/core/tc-op

Test Method
  1. Validate that tiles making up a tileset containing available data are available as an HTTP GET request to a URI that is built from a template containing three variables (such as {tileMatrix}, {tileRow} and {tileCol} as defined by the tileset conformance class, or {z}, {y} and {x}). The URI is obtained by substituting the variables by their respective valid values.

  2. Validate that the variables in the URL correspond to the tile matrix, tile row and tile column of a particular tile matrix set as defined by the 2D Tile Matrix Set standard.

  3. Validate that API SHALL provides a mechanism to obtain the template and associate the variables to their respective meaning, for example by implementing the tileset conformance class, or through an API definition.

NOTE  In practice to test the core conformance class the user of the test should provide a TileMatrixSet definition, a URL template (that contains the endpoint for tiles) with specific variable names, and a range of valid values for those variables and build URLs and execute the test.

A.1.2.2.  Parameter tileMatrix

Table A.3

Abstract Test 3

/conf/core/tc-tilematrix-definition

Test Purpose

Validate that there is a tileMatrix definition.

Requirement

/req/core/tc-tilematrix-definition

Test Method
  1. If the API implements OGC API — Common — Part 1: Core, validate that the definition of a tile operation contains a mandatory string parameter tileMatrix.

A.1.2.3.  Parameter tileRow

Table A.4

Abstract Test 4

/conf/core/tc-tilerow-definition

Test Purpose

Validate that there is a tileRow definition.

Requirement

/req/core/tc-tilerow-definition

Test Method
  1. If the API implements OGC API — Common — Part 1: Core, validate that the definition of a tile operation contains a mandatory integer parameter tileCol.

A.1.2.4.  Parameter tileCol

Table A.5

Abstract Test 5

/conf/core/tc-tilecol-definition

Test Purpose

Validate that there is a tileCol definition.

Requirement

/req/core/tc-tilecol-definition

Test Method
  1. If the API implements OGC API — Common — Part 1: Core, validate that the definition of a tile operation contains a mandatory integer parameter tileCol.

A.1.2.5.  Response

Table A.6

Abstract Test 6

/conf/core/tc-success

Test Purpose

Validate that a successful execution with data responds with a HTTP status code 200, the format is consistent with the requested and the elements represented in the tile are the ones present in the geographical area.

Requirement

/req/core/tc-success

Test Method
  1. Validate that a successful execution of the operation with content responds with a HTTP status code 200.

  2. Validate that the content of that response is consistent with the format requested via HTTP content negotiation and represents elements inside or intersecting with the spatial extent of the geographical area of the tile identified by the tile matrix, tile row and tile column of the tileset’s tile matrix set.

A.1.2.6.  Error conditions

Table A.7

Abstract Test 7

/conf/core/tc-error

Test Purpose

Validate that the request of tile that is out-of-range or empty, responds the right content

Requirement

/req/core/tc-error

Test Method
  1. If the path parameter values tileMatrix, tileRow, tileCol for a tile request are out-of-range (outside the tile matrix set or tile matrix set limits of the resource), validate that the HTTP response is a status code 404 or a 400.

  2. If the tile has no content due to lack of data in the area, but is within the data resource’s tile matrix sets and tile matrix sets limits, validate that the HTTP response is a status code either 204 (indicating an empty tile with no content) or a 200 with the content of a blank response compatible with the requested media type (which may or may not be zero bytes long, depending on the output format; e.g., a 0 byte file if valid for the requested format, or a PNG with internal headers and no “pixels”).

A.2.  Conformance Class “TileSet”

Conformance class A.2

SubjectTileSet
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tileset

A.2.1.  Tileset resource

A.2.1.1.  Response

Table A.8

Abstract Test 8

/conf/tileset/description

Test Purpose

Validate the content of a tileset description

Requirement

/req/tileset/description

Test Method
  1. Validate that the tileset endpoint SHALL support negotiating an application/json response. In this case, a successful response of a HTTP GET for a specific tileset is encoded following the data model and JSON schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

  2. If the tileset endpoint also support negotiating an application/xml response, validate that a successful response of a HTTP GET for a specific tileset is encoded following the data model and XML schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

  3. If the tileset uses a TileMatrixSet registered in a TileMatrixSet registry (e.g. OGC NA), validate that the tileMatrixSetURI property links to the registered TileMatrixSet (e.g. http://www.opengis.net/def/tilematrixset/{tileMatrixSet}).

  4. Validate that the links property includes a link to the TileMatrixSet definition with relation type http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme following the tile matrix set schema, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0.

  5. Validate that the tileset metadata includes at least one templated link to individual tiles using the relation type item, and the template parameters {tileMatrix}, and {tileRow} and {tileCol}. Those variables are to be substituted by their respective valid values to obtain the URL to a tile.

  6. If a tiles link template is specific to a particular format, validate that contains the media type for that format in the “type” property. Otherwise, normal HTTP content type negotiation rules apply (Accept: header).

  7. Validate that a property templated with a boolean true value is part of the link properties to indicate that the link needs to be processed to substitute the templated variables with valid values before being used as a URL to a tile.

A.3.  Conformance Class “TileSets List”

Conformance class A.3

SubjectTileSets List
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tilesets-list

A.3.1.  Tilesets list

A.3.1.1.  Response

Table A.9

A.4.  Conformance Class “Dataset Tile Sets”

Conformance class A.4

SubjectDataset Tile Sets
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/dataset-tilesets

A.4.1.  Web API landing page

A.4.1.1.  Response

Table A.10

Abstract Test 10

/conf/dataset-tilesets/landingpage

Test Purpose

Validate that it is possible to retrieve the tilesets list for the dataset

Requirement

/req/dataset-tilesets/landingpage

Test Method

1.- If the API has mechanism to expose root resources (e.g., a landing page), validate that the API advertises at least one URIs to retrieve tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector, http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage.

A.4.2.  Dataset tilesets

A.4.2.1.  Operation

Table A.11

Abstract Test 11

/conf/dataset-tilesets/operation

Test Purpose

Validate that there is an operation to get the tilesets list.

Requirement

/req/dataset-tilesets/operation

Test Method
  1. Validate that the dataset resource (the root resource) has at least one tileset accessible at …​/tiles supporting an HTTP GET operation

  2. Validate that the URI is composed of two parts: the initial part is the URI of the dataset resource (the root resource) that can be represented as tiles and the final part follows the pattern /tiles

A.5.  Conformance Class “Geo Data Resource TileSets”

Conformance class A.5

SubjectGeo Data Resource TileSets
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geodata-tilesets

A.5.1.  Geospatial data resources

Table A.12

A.5.2.  Geospatial data resources tilesets list

A.5.2.1.  Tilesets path

Table A.13

Abstract Test 13

/conf/geodata-tilesets/operation

Test Purpose

Validate that there is an operation to get the tilesets list.

Requirement

/req/geodata-tilesets/operation

Test Method
  1. Validate that the geospatial data resource haa an associated list of at least one tileset accessible at …​/tiles supporting an HTTP GET operation

  2. Validate that the URI is composed of two parts: the initial part is the URI of the geospatial data resource that can be represented as tiles and the final part follows the pattern /tiles

A.6.  Conformance Class “Collections Selection”

Conformance class A.6

SubjectCollections Selection
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection

A.6.1.  Operation

A.6.1.1.  Parameter collections

Table A.14

Abstract Test 14

/conf/collections-selection/query-collections

Test Purpose

Validate support of the optional parameter collections.

Requirement

/req/collections-selection/query-collections

Test Method

Given:

A tileset for an origin consisting of multiple geospatial data sub-resources (e.g., described in the tileset metadata as being comprised of multiple layers).

When:

Requesting resources either for the tileset or for individual tiles (e.g., a dataset tileset at {datasetAPI}/tiles/WebMercatorQuad and dataset tiles at {datasetAPI}/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}), with a collections query parameter consisting of a comma-separated list of collectionIDs (consistent with the collection identifiers making up that tileset, as described for example, in the tileset metadata layers).

Then:

Assert that the parameter is accepted for valid lists of collectionIDs.

Note that servers are free to restrict valid combinations of collectionIDs (permission /per/collections-selection/valid-collections). Tests should be restricted to few collections e.g., between one and five. If the sub-collections are also available individually, only collections advertising support for the same TileMatrixSet, CRS and encodings as used for the request should be selected.

A.6.1.2.  Response

Table A.15

Abstract Test 15

/conf/collections-selection/collections-response

Test Purpose

Validate response when using collections parameter.

Requirement

/req/collections-selection/collections-response

Test Method

Given:

Requests described in the previous abstract test (query-collections)

When:

The request is successful

Then:

Assert that the response to tilesets and tiles requests only include the selected collections. For tilesets, verify that only the selected collections are included in the layers. For tiles, verify that the content is limited to the data pertaining to the selected collections.

If more than one collection is selected and no style applied specifies otherwise, validate that the selected collections are included in the response starting by the first (leftmost in the comma-separated list) and ending by the last (rightmost). In map tiles, this will result in the first collection being portrayed at the bottom and the others are rendered on top of the previous ones, one by one (the rightmost collection will become topmost in the portrayal).

A.7.  Conformance Class DateTime

Conformance class A.7

Subjectdatetime
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/datetime

A.7.1.  datetime query parameter request and response

Table A.16

Abstract Test 16

/conf/collections/rc-op-datetime

Test Purpose

Validate that resources can be identified and extracted from an API server using the datetime query parameter.

Requirement

/req/collections/rc-datetime-definition
/req/collections/rc-datetime-response

Test Method
  1. Select a valid datetime value which intersects a subset of the resource collections available through the API implementation.

  2. Construct a datetime query parameter using the selected value.

  3. Validate the datetime query parameter using /conf/collections/rc-datetime-definition

  4. Issue an HTTP GET request to the URL {root}/collections. Include the validated datetime query parameter.

  5. Validate that a document was returned with a status code 200

  6. Validate the contents of the returned document using:

    1. /conf/collections_rc-md-success and

    2. /conf/collections/rc-datetime-response and

    3. /conf/collections/rc-paged-response.

Table A.17

Abstract Test 17

/conf/collections/rc-datetime-definition

Test Purpose

Validate that the dateTime query parameter is constructed correctly.

Requirement

/req/collections/rc-datetime-definition

Test Method

Verify that the datetime query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment):

name: datetime
in: query
required: false
schema:
  type: string
style: form
explode: false

Table A.18

Abstract Test 18

/conf/collections/rc-datetime-response

Test Purpose

Validate that the datetime query parameter is processed correctly.

Requirement

/req/collections/rc-datetime-definition
/req/collections/rc-datetime-response
/req/collections/rc-datetime-collection-response

Test Method

DO FOR each Collection in the collections element of the response:

  1. Extract the temporal geometry from the interval element of the extent property of the Collection resource.

  2. IF there is a temporal geometry, verify that the temporal geometry intersects the temporal period defined by the datetime parameter.

  3. IF there is a temporal geometry, validate that the processing of the datetime parameter complies with the syntax described in /req/collections/rc-datetime-definition (B, C, and D).

A.7.2.  subset=datetime query parameter request and response

Table A.19

Abstract Test 19

/conf/collections/rc-op-subset

Test Purpose

Validate that resources can be identified and extracted from an API server using the subset query parameter.

Requirement

/req/collections/rc-subset-definition
/req/collections/rc-subset-response

Test Method
  1. Select a valid subset value which intersects a subset of the resource collections available through the API implementation.

  2. Construct a subset query parameter using the selected dimension name and value.

  3. Validate the subset query parameter using /conf/collections/rc-subset-definition

  4. Issue an HTTP GET request to the URL {root}/collections. Include the validated subset query parameter.

  5. Validate that a document was returned with a status code 200

  6. Validate the contents of the returned document using:

    1. /conf/collections_rc-md-success and

    2. /conf/collections/rc-subset-response and

    3. /conf/collections/rc-paged-response.

Table A.20

Abstract Test 20

/conf/collections/rc-subset-definition

Test Purpose

Validate that the subset query parameter is constructed correctly.

Requirement

/req/collections/rc-subset-definition

Test Method

Verify that the subset query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment):

  SubsetSpec:       "subset"=axisName(intervalOrPoint)
  axisName:         {text}
  intervalOrPoint:  interval | point
  interval:         low : high
  low:              point | *
  high:             point | *
  point:            {number} | "{text}"

  Where:
     \" = double quote = ASCII code 0x42,
     {number} is an integer or floating-point number, and
     {text} is some general ASCII text (such as a time and date notation in ISO 8601).

Table A.21

Abstract Test 21

/conf/collections/rc-subset-response

Test Purpose

Validate that the subset query parameter is processed correctly.

Requirement

/req/collections/rc-subset-definition
/req/collections/rc-subset-response
/req/collections/rc-subset-collection-response

Test Method

DO FOR each Collection in the collections element of the response:

  1. Extract the dimension values from the interval element of the extent property of the Collection resource.

  2. If the dimension is there, verify that the dimension interval intersects the dimension period defined by the subset parameter.

  3. If the dimension is there, validate that the processing of the subset parameter complies with the syntax described in /req/collections/rc-subset-definition.

Table A.22

Abstract Test 22

/conf/datetime/axis

Test Purpose

Validate that a request of a subset of a datetime dimension is supported by the server

Requirement

/req/datetime/axis

Test Method
  1. Validate the server support “datetime” as axisname in the subset parameter to subset the generic datetime dimension.

A.8.  Conformance Class OpenAPI 3.0 Specification

Conformance class A.8

SubjectOpenAPI Specification 3.0
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/oas30

A.8.1.  Web API OpenAPI definition response

Table A.23

Abstract Test 23

/conf/oas30/completeness

Test Purpose

Validate OpenAPI completeness and consistency

Requirement

/req/oas30/completeness

Test Method
  1. Validate that OpenAPI definition describes all tileset, tilesets list and tile resources provided by the API instance.

  2. Validate that the OpenAPI paths are consistent with the links provided by the landing page, tileset and tilesets list resources.

  3. Validate that the OpenAPI paths provides the description of the parameters that the tileset and tile resources need to operate as specified in the corresponding conformance classes.

Table A.24

Abstract Test 24

/conf/oas30/completeness

Test Purpose

Validate use of operationID suffixes in OpenAPI definition

Requirement

/req/oas30/operationids

Test Method
  1. Validate that at least one instance of all path operations defined in the supported conformance classes can be discovered in the API definition by identifying them based on the operationIDs suffixes specified in Table 11.

A.9.  Conformance Class “XML” Tileset Metadata

Conformance class A.9

SubjectXML
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/xml

A.9.1.  XML encoding

Table A.25

Abstract Test 25

/conf/xml/definition

Test Purpose

Validate the support of the required media type

Requirement

/req/xml/definition

Test Method
  1. Validate that 200-responses of the server supports the application/xml media type for the Tilesets list and TileSet resources.

Table A.26

Abstract Test 26

/conf/xml/content

Test Purpose

Validate the particularities of a XML response

Requirement

/req/xml/content

Test Method
  1. Validate that every request to a TileSets list or TileSet resource which: Receives a 200-response and with the Content-Type header set to application/xml includes, or links to, a payload encoded according to the Extensible Markup Language (XML) 1.0

  2. Validate that the payload for these responses conforms with the XML Schema specified for the resource in the OGC 17-083r4: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata

A.10.  Conformance Classes for tile encodings

A.10.1.  Conformance Class “PNG”

Conformance class A.10

SubjectPNG
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/png

A.10.1.1.  PNG encoding

Table A.27

Abstract Test 27

/conf/png/content

Test Purpose

Validate the particularities of a PNG response

Requirement

/req/png/content

Test Method
  1. Validate that every 200-response of the server with the media type image/png contains a PNG document representing only one tile.

  2. Validate that the colors of the PNG represent the geospatial features or coverage values in the tile.

  3. Validate that the alpha channel of the PNG is used when partial transparency is required.

  4. Validate that all tiles representing parts of the same resource or resources and using the same style are following the same portrayal rules.

A.10.2.  Conformance Class “JPEG”

Conformance class A.11

SubjectJPEG
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/jpeg

A.10.2.1.  JPEG Encoding

Table A.28

Abstract Test 28

/conf/jpeg/content

Test Purpose

Validate the particularities of a JPEG response

Requirement

/req/jpeg/content

Test Method
  1. Validate that every 200-response of the server with the media type image/jpeg contains a JPEG document representing only one tile

  2. Validate that the colors of the JPEG represents coverage values or geospatial features in the tile.

  3. Validate that all tiles representing parts of the same resource or resources using the same style are following the same portrayal rules

A.10.3.  Conformance Class “TIFF”

Conformance class A.12

SubjectTIFF
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tiff

A.10.3.1.  TIFF encoding

Table A.29

Abstract Test 29

/conf/tiff/content

Test Purpose

Validate the particularities of a TIFF response

Requirement

/req/tiff/content

Test Method
  1. Validate that every 200-response of the server with the media type image/tiff contains a TIFF document representing only one tile

  2. Validate that the TIFF file is organized in strips (avoiding organization in internal tiles).

  3. Validate that all tiles representing parts of the same resource or resources and using the same style follows the same portrayal rules or represent data with the same reference and units of measure.

Table A.30

Abstract Test 30

/conf/tiff/geotiff

Test Purpose

Validate GeoTIFF consistency of the georeference

Requirement

/req/tiff/geotiff

Test Method
  1. If the TIFF encoding incorporates GeoTIFF georeference, validate that this information is consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol

A.10.4.  Conformance Class “NetCDF”

Conformance class A.13

SubjectNetCDF
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/netcdf

A.10.4.1.  NetCDF encoding

Table A.31

Abstract Test 31

/conf/netcdf/content

Test Purpose

Validate the particularities of a NetCDF response

Requirement

/req/netcdf/content

Test Method
  1. Validate that every 200-response of the server with the media type application/netcdf or application/x-netcdf contains a NetCDF document representing only one tile

  2. Validate that the NetCDF file contains only data in two or more dimensions

Table A.32

Abstract Test 32

/conf/netcdf/geo

Test Purpose

Validate NetCDF consistency of the georeference

Requirement

/req/netcdf/geo

Test Method
  1. Validate that the NetCDF encoding incorporates georeference, this information is consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol

A.10.5.  Conformance Class “GeoJSON”

Conformance class A.14

SubjectGeoJSON
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geojson

A.10.5.1.  GeoJSON Encoding

Table A.33

Abstract Test 33

/conf/geojson/content

Test Purpose

Validate the particularities of a GeoJSON response

Requirement

/req/geojson/content

Test Method
  1. Validate that every 200-response of the server with the media type application/geo+json contains a GeoJSON document representing only one tile.

  2. Validate that root of the GeoJSON document is a GeoJSON FeatureCollection Object for features, or a GeoJSON Feature Object for a single feature.

  3. Validate that regardless of the TileMatrixSet CRS, the geometry coordinates are in CRS84 as stated in the GeoJSON standard unless a prior arrangement applies to use an alternative coordinate reference system. The fact that a TileMatrixSet is used does not constitute a prior arrangement. For example, an extension could negotiate another CRS for coordinates with a query parameter.

A.10.6.  Conformance Class “Mapbox Vector Tiles”

Conformance class A.15

SubjectMapbox Vector Tiles
Target typeWeb API
Labelhttp://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/mvt

A.10.6.1.  Mapbox Vector Tiles Encoding

Table A.34

Abstract Test 34

/conf/mvt/content

Test Purpose

Validate the particularities of a Mapbox Vector Tiles response

Requirement

/req/mvt/content

Test Method
  1. Validate that every 200-response of the server with the media type application/vnd.mapbox-vector-tile contains a Mapbox Vector Tile document representing only one tile.

  2. Validate that a feature contains a geometry field. Validate that a feature contains a type field as described in the Geometry Types section.

  3. Validate that the grid space for the MVT coordinates maps linearly to the coordinates in the tile extent expressed in the Tileset CRS unless a prior arrangement applies to use an alternative CRS; and in this case the linear mapping is done to the alternative CRS and not with the Tileset CRS. For example, an extension could negotiate another CRS for coordinates with a query parameter. In particular the 0,0 coordinate in the MVT maps to the top-left corner of the tile. The bottom-right corner of the tile corresponds the bottom-right corner of the MVT grid.


Annex B
(informative)
Revision history

Date Release Editor Primary clauses modified Description
2019-03-21 Template C. Heazel all initial template
2020-04-15 0.0.1 J. Maso all Several
2020-04-21 0.0.2 J. Maso all Several
2020-05-21 0.0.3 G. Hobona Annex A Fixed Conformance Class URI and added abstract tests

Bibliography

This standard is deeply inspired in concepts defined in the following documents that preceded it. This standard offers and alternative interface to fulfill similar tasks included in these references:

[1]  Stefano Cavazzi: OGC 17-041, OGC Testbed-13: Vector Tiles Engineering Report. Open Geospatial Consortium (2018). https://docs.ogc.org/per/17-041.html.

[2] de la Beaujardiere J.: Web Map Service (WMS), version 1.3.0 (OGC 06-042), http://portal.ogc.org/files/?artifact_id=14416

[3] DGIWG 124 Defence Profile of OGC Web Map Tile Service 1.0, 17 October 2017. https://portal.dgiwg.org/files/?artifact_id=68271=pdf

[4] Digital Globe: Web Map Tile Service Developer Guide. Cloud Services | August 2013. https://dg-cms-uploads-production.s3.amazonaws.com/uploads/document/file/174/DGCS_DeveloperGuide_WMTS.pdf

[5] Hobona G, Idol, T.: OGC Vector Tiles Pilot 2: Summary Engineering Report (OGC 19-088r2), http://docs.ogc.org/per/19-088r2.html

[6] IANA: Link Relation Types, https://www.iana.org/assignments/link-relations/link-relations.xml

[7] Ingensand J. and Maia K.: OGC Vector Tiles Pilot: Tiled Feature Data Conceptual Model Engineering Report (OGC 18-076), https://docs.ogc.org/per/18-076.html

[8] MapBox: MBTiles Specification. https://github.com/mapbox/mbtiles-spec

[9] Masó J.: OGC Testbed-15: Maps and Tiles API Engineering Report (OGC 19-069), https://docs.ogc.org/per/19-069.html

[10] Masó J., Pomakis K. and Julià N.: Web Map Tile Service (WMTS), version 1.0. (OGC 07-057r7) http://portal.ogc.org/files/?artifact_id=35326

[11] Masó J.: Map Tile Service (WMTS) Simple Profile, version 1.0 (OGC 13-082r2), http://docs.ogc.org/is/13-082r2/13-082r2.html

[12] Meek S.: OGC Vector Tiles Pilot: Summary Engineering Report (OGC 18-086r1), https://docs.ogc.org/per/18-086r1.html

[13] NGA, National System for Geospatial-Intelligence (NSG) Web Map Tile Service 1.0.0 Interoperability Standard NGA.STND.0063_1.1_WMTS, 2018-04-27

[14] Taleisnik S.: OGC Vector Tiles Pilot 2: Tile Set Metadata Engineering Report (OGC 19-082r1), http://docs.ogc.org/per/19-082r1.html#_metadatadate

[15] Vretanos P.A.: OGC Vector Tiles Pilot: WFS 3.0 Vector Tiles Extension Engineering Report (OGC 18-078), https://docs.ogc.org/per/18-078.html

[16] Vretanos P.A.: OGC Vector Tiles Pilot: WMTS Vector Tiles Extension Engineering Report (OGC 18-083), https://docs.ogc.org/per/18-083.html

[17] Yutzler J.: Vector Tiles Pilot Extension Engineering Report (OGC 18-101), http://docs.ogc.org/per/18-101.html

[18] W3C/OGC: Spatial Data on the Web Best Practices, W3C Working Group Note 28 September 2017, https://www.w3.org/TR/sdw-bp/

[19] W3C: Data on the Web Best Practices, W3C Recommendation 31 January 2017, https://www.w3.org/TR/dwbp/